我需要可靠的方法来创建%tab% (包含一个制表符),Windows和XP。
SET TAB=" "应适用于Windows 7(未经测试),但不适用于Win XP (经测试)。
这
for /F "skip=4 delims=pR tokens=1,2" %%a in ( 'reg query hkcu\environment /v temp' ) do set TAB=%%b仅适用于Win XP。
发布于 2012-06-04 18:13:35
您应该使用支持TAB字符而不将其更改为空格的编辑器。
您应该对引号进行重新排序,就像使用set TAB=" "一样,您得到了一个包含三个字符的变量。
选项卡中还包含引号。
set "TAB= "目前,在所有语言平台上的所有Windows版本中,似乎没有可靠的方法来使用程序创建TAB字符。
但是您也可以使用嵌入的Jscript代码片段。
@if (@X)==(@Y) @goto :Dummy @end/* Batch part
@echo off
SETLOCAL ENABLEEXTENSIONS
for /f "delims=" %%x in ('cscript //E:JScript //nologo "%~f0"') do set TAB=%%x
echo Tab character is "%tab%"
goto :EOF
***** Now JScript begins *****/
WScript.Echo(String.fromCharCode(9));发布于 2018-01-06 23:44:26
使用robocopy,也可以生成TAB。默认情况下,Robocopy在windows xp中不可用。
for /f "delims= " %%T in ('robocopy /L . . /njh /njs') do set "TAB=%%T"发布于 2018-04-22 02:54:07
这种方法在Win2k、WinXP、Vista、Win7、Win8、Win10上都是一样的
它利用了这样一个事实,即由微软编译器工具集生成的PE可执行映像的MZ头文件从近25年前的NT3.1时代到今天的Windows10时代保持不变。
MZ头的偏移量0x46处的字节值是0x09,这是 TAB 字符,因此从windows中选取任何可执行文件并从中抓取TAB就足够了。
而最方便和合理的选择是使用命令处理器本身的可执行文件。
@echo off
setlocal EnableExtensions
set "TAB="
for /F "delims=" %%Z in (
'^(type "%COMSPEC%"^|^(^(for /L %%P in ^(1^,1^,70^) do @pause^>nul^)^&set /p "TAB="^&call echo^,%%TAB%%^)^)2^>nul'
) do set "TAB=%%Z"
set "TAB=%TAB:~0,1%"
echo,
echo TAB---^>[%TAB%]^<---TAB SPACE---^>[ ]^<---SPACE EMPTY---^>[]^<---EMPTY
echo,
pause2018年4月23日更新
这是另一种更容易理解的语法,它避免了使用管道,并且比上面的语法快得多
((for /L %%P in (1,1,70) do pause>nul)&set /p "TAB=")<"%COMSPEC%"
set "TAB=%TAB:~0,1%"/UPDATE
要回显TAB,请使用以下表单:
echo,%TAB%要将TAB字符写入文件,请执行以下操作:
:: Creates a new file with TAB character
echo,%TAB%>"NewFile.txt"
:: Appends the TAB character to end of the existing file
echo,%TAB%>>"ExistingFile.txt"请注意,echo将始终在末尾附加一个新行(CRLF)。如果你只是想要没有换行符的制表符,使用提示技术,但请记住,这种方法与echo相比,非常慢,所以不要过度使用它
setlocal
set "prompt=%TAB%"
"%COMSPEC%" /d /k<nul>"TAB_Without_NewLine.txt"
endlocalhttps://stackoverflow.com/questions/10878138
复制相似问题