windows批次为/ f

时间:2014-05-03 16:38:12

标签: variables for-loop cmd

我惹恼了一个非常讨厌的问题。我有这个文件进行处理(.fil):

 Babchuk\Bianca\13 Stratford\Sun City West\AZ\Professor
 Babchuk\Deana\12 View\Thousand Oaks\CA\Housewife
 Babchuk\Nicholas\13 Stratford\Sun City West\AZ\Professor

我需要为每个州创建一个单独的文件,state =第五个字段(两个" AZ"行的文件和单个" CA"行的文件)。最后,我需要有两个文件:AZ.txt和CA.txt。 每个文件都包含包含文件状态的每一行。

我想出了这批,但它不会起作用。它只创建了一个无名文件,其中包含很多行" ECHO已关闭。"。

for /f "delims=\ tokens=*" %%a IN (c:\windosbk\forf\sortedPx.txt) DO (
    set line=%%a
    for /f "delims=\ tokens=5" %%b IN ("%%a") DO (
        set state=%%b
    )
    echo %line%>>%state%.txt
)
pause

只是为了确保清楚,结果应该是2个新文件:

AZ.txt:

Babchuk\Bianca\13 Stratford\Sun City West\AZ\Professor
Babchuk\Nicholas\13 Stratford\Sun City West\AZ\Professor

CA.txt:

Babchuk\Deana\12 View\Thousand Oaks\CA\Housewife**

2 个答案:

答案 0 :(得分:2)

以下是您的示例文件的解决方案:

@echo off
for /f "usebackq delims=" %%a in ("c:\windosbk\forf\sortedPx.txt") do (
   for /f "delims=" %%b in ("%%~pa\.") do >>"%%~nxb.txt" echo %%a
)

答案 1 :(得分:1)

这并没有尝试使用stateline变量,所以如果它们因为其他原因对您很重要,那么您必须将它们重新放入,但是这会在给出您的示例输入文件时生成所需的输出文件:

for /f "tokens=*" %%a IN (input.fil) DO (
    echo %%a
    for /f "delims=\ tokens=5" %%b IN ("%%a") DO (
        echo %%a >>%%b.txt
    )
)