我正在尝试使用Windows批处理中的FOR命令。
如何指定TAB字符作为分隔符?默认情况下是空格和制表符,但我只需要制表符。
我已经尝试过这个方法,但它没有起作用:
FOR /F "tokens=3 delims=^T" %i in (test.txt) do @echo %i
看起来它是在T字符上进行分割,而不是在制表符上。我还尝试了将文字直接粘贴到命令提示符中,但是出现了语法错误。
我正在尝试使用Windows批处理中的FOR命令。
如何指定TAB字符作为分隔符?默认情况下是空格和制表符,但我只需要制表符。
我已经尝试过这个方法,但它没有起作用:
FOR /F "tokens=3 delims=^T" %i in (test.txt) do @echo %i
看起来它是在T字符上进行分割,而不是在制表符上。我还尝试了将文字直接粘贴到命令提示符中,但是出现了语法错误。
您需要在引号选项字符串中使用一个字面的制表符。字面制表符在批处理文件和命令行上均有效。
如果您试图在命令行中键入一个制表符,那么文件名完成可能会挫败您的努力。您可以使用 CMD /F:OFF
来禁用名称完成。然后您就可以输入一个字面制表符。
尝试将制表符输入到批处理脚本中时,您也可能会遇到问题,这取决于您所使用的文本编辑器。一些程序员编辑器具有自动将 TAB 转换为空格的设置。您需要确保您的编辑器没有这样做。
因此,您只需要更改您的 "tokens=3 delims=^T"
字符串,以使用一个制表符字面值而不是 ^T
。
哎呀呀,这个下午头疼死我了...
今天我也遇到了同样的问题... 我需要解析带有 FOR /F 的行,每行都是由若干句子组成(每个句子可能包含空格),每个句子之间用制表符(TAB)分隔。
我的问题是,即使是在批处理文件中,我的公司编码标准也禁止在源代码中使用实际的 TAB 字符(我们的编辑器不允许输入 TAB,而我们的版本控制工具则不允许将任何包含 TAB 或 WTR [white-to-the-right] 的文本文件提交检查。)
所以,虽然这是一种 hack,但它能在 XP 上运行(低头...深感羞愧...)
SET REG_CPU="HKLM\Hardware\Description\System\CentralProcessor\0"
REG.EXE QUERY %REG_CPU% /V IDENTIFIER | FIND "REG_SZ" > RegCPUid.Tmp
for /F "tokens=2 delims=rR" %%i in (RegCPUid.Tmp) do SET TAB=%%~i
这个可以在XP上运行,但我还没有检查过Win7或Win7[WoW64]。
RegCPUid.Tmp的临时内容为一行,看起来像:
" IDENTIFIER<tab>REG_SZ<tab>x86 Family 6 Model 37 Stepping 2"
for /F "tokens=1-3* delims=%TAB%" %%i in (Sentences.txt) do ECHO The THIRD sentence is %%k
/F:ON
启动cmd
进程。如果没有这个,即使粘贴一个制表符也不起作用。<tab><space>
。只需从命令行键入 HELP FOR
并阅读 DELIMS 选项的描述即可。 - dbenham
delims=%TAB%
是我正在寻找的。谢谢! - RK Coder