[英]Windows batch FOR command tab delimiter
我正在嘗試使用Windows批處理FOR命令 。
如何將TAB字符指定為分隔符? 默認為空格和制表符,但我只想要制表符。
我試過這個,但它不起作用:
FOR /F "tokens=3 delims=^T" %i in (test.txt) do @echo %i
它似乎是在T字符而不是標簽上分裂。 我還嘗試了一個粘貼到命令提示符的文字,但是我收到了語法錯誤。
您需要在帶引號的選項字符串中使用文字制表符。 文字TAB既可以在批處理文件中運行,也可以在命令行上運行。
如果您嘗試在命令行中鍵入TAB,則文件名完成可能會阻礙您的工作。 您可以使用CMD /F:OFF
禁用名稱完成。 然后,您就可以輸入文字TAB字符。
根據您使用的文本編輯器,嘗試將TAB輸入批處理腳本時也會遇到問題。 一些程序員的編輯器具有自動將TAB轉換為空格的設置。 您需要確保您的編輯器沒有這樣做。
所以你只需要改變你的"tokens=3 delims=^T"
字符串來使用TAB文字而不是^T
Ngaaa ..談談下午的頭痛......
我今天遇到了同樣的問題......我需要用FOR / F解析行,其中每行是多個句子(每個都有嵌入的空格),每個句子由TAB分隔。
我的問題是我的公司編碼標准(甚至對於BATCH文件)禁止在源代碼中使用實際的TAB字符(我們的編輯禁止將TAB放入,我們的版本控制工具禁止任何帶有TAB或WTR的文本文件的CheckIn [白色] -在右邊]。)
所以,這是一個黑客,但它適用於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的臨時內容是ONE LINE,看起來像
" IDENTIFIER<tab>REG_SZ<tab>x86 Family 6 Model 37 Stepping 2"
FOR命令簡單地刪除IDENTIFIER和REG_SZ的兩個“R”之間的孤獨TAB ,並將環境變量TAB設置為它。
然后我的腳本可以執行所需的所有FOR / F循環,只需將制表符作為分隔符(而不是空格)...
for /F "tokens=1-3* delims=%TAB%" %%i in (Sentences.txt) do ECHO The THIRD sentence is %%k
所有這些都允許我在BATCH文件中沒有任何硬編碼的TAB字符。
戴夫
看起來文字制表符確實起作用,但您必須使用/F:ON
啟動cmd
進程。 沒有它,即使粘貼在制表符中也不起作用。
根據這個網站http://ss64.com/nt/for_f.html ,默認分隔符是一個選項卡,所以在沒有delims參數的情況下嘗試它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.