簡體   English   中英

Windows批處理FOR命令選項卡分隔符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM