Windows 批处理选项卡定界也会在回显时删除字符T、A和B

Windows 批处理选项卡定界也会在回显时删除字符T、A和B,windows,batch-file,Windows,Batch File,我有大约300个文件需要解析,它们是以制表符分隔的。我在下面使用的代码(未完成)是: 它似乎可以正常工作,除非当字段以T、a或B开头时,回声会删除此字符?i、 例如,Taxidea\u taxus变成axidea\u taxus。这是一个bug,还是我可以解决它?我应该注意到,使用会产生相同的效果。当您指定delims=TAB时,处理器使用,字面上的T,A和B作为分隔符。要使用制表符,必须输入文字制表符(在脚本中显示为空白) 试试这个: REM Set a variable to the <

我有大约300个文件需要解析,它们是以制表符分隔的。我在下面使用的代码(未完成)是:


它似乎可以正常工作,除非当字段以T、a或B开头时,回声会删除此字符?i、 例如,
Taxidea\u taxus
变成
axidea\u taxus
。这是一个bug,还是我可以解决它?我应该注意到,使用
会产生相同的效果。

当您指定
delims=TAB
时,处理器使用,字面上的
T
A
B
作为分隔符。要使用制表符,必须输入文字制表符(在脚本中显示为空白)

试试这个:

REM Set a variable to the <TAB> character.
REM Make sure you editor doesn't replace Tabs with spaces.
REM Enter an actual <tab> in the SET statement below.
SET "TabChar=    "

for /r C:\mywork2\MAX\ %%f in (*) do (
    REM Parse with the tab character.
    for /f "delims=%TabChar%" %%i in (%%f) do (
        for %%u in (%%i) do (
            ECHO %%u
        )
    )
    pause
)
REM为字符设置一个变量。
REM确保编辑器不会将选项卡替换为空格。
REM在下面的SET语句中输入一个实际值。
设置“TabChar=”
对于/r C:\mywork2\MAX\%f in(*)do(
使用制表符进行REM解析。
对于(%%f)do中的/f“delims=%TabChar%”%%i(
对于%%u in(%%i)do(
回声%%u
)
)
暂停
)

我认为这不是重复,因为我使用的是文字选项卡。这段代码正在拆分标签和T、A和B。也许我目前对batch了解不够,无法从后面的答案中获得最多的信息。我将进行实验,因为制表符作为分隔符在这种情况下有效。我已经做到了。我想知道为什么它除了分隔标签外还删除了T、A和B。我不认为这个问题解决了这个问题;如果是这样,我想我看不到答案,可能需要一些帮助。它正在删除t、A、B,因为这些字符列为分隔符,而分隔符在拆分时会被删除。您是打算在这些字母上拆分(例如:
xxaybybzztww->“XX”、“YY”、“ZZ”、“WW”
),还是在制表符上拆分?那么为什么要告诉我使用制表符文字(制表符应该是制表符文字)。我不想在字母上拆分,我只希望在制表符上拆分…出于某种原因,上面的代码同时执行这两种操作。我尝试过这样做/F:ON,但不起作用,我不愿意尝试“黑客”响应。为什么你认为它“有效”(两者都有效)?
REM Set a variable to the <TAB> character.
REM Make sure you editor doesn't replace Tabs with spaces.
REM Enter an actual <tab> in the SET statement below.
SET "TabChar=    "

for /r C:\mywork2\MAX\ %%f in (*) do (
    REM Parse with the tab character.
    for /f "delims=%TabChar%" %%i in (%%f) do (
        for %%u in (%%i) do (
            ECHO %%u
        )
    )
    pause
)