Batch file 批处理脚本-FOR/F中的语法无效

Batch file 批处理脚本-FOR/F中的语法无效,batch-file,Batch File,我有一个批处理脚本,它应该解析一个包含文件名和时间戳的文件 :MAIN SETLOCAL EnableDelayedExpansion FOR /F "tokens=1,2,4 skip=7" %%A in (C:\list_of_psa_files.txt) DO @echo %%A %%B %%C exit _psa_files.txt的文件C:\list_包含以下数据 Volume in drive C is Windows XP 6.6 Volume Serial Number

我有一个批处理脚本,它应该解析一个包含文件名和时间戳的文件

:MAIN

SETLOCAL EnableDelayedExpansion

FOR /F "tokens=1,2,4 skip=7" %%A in (C:\list_of_psa_files.txt) DO
@echo %%A %%B %%C 

exit
_psa_files.txt的文件C:\list_包含以下数据

Volume in drive C is Windows XP 6.6
Volume Serial Number is AC12-84AA

Directory of C:\Test

10/05/2011 03:17 PM <DIR> .
10/05/2011 03:17 PM <DIR> ..
10/05/2011 01:21 PM 4,393 1-16332-1008261.psa
10/05/2011 01:21 PM 4,863 1-16332-1011698.psa
10/05/2011 01:21 PM 4,793 1-16332-1023151.psa
10/05/2011 01:21 PM 4,916 1-16332-1035695.psa
10/05/2011 01:21 PM 4,524 1-16332-1037029.psa
10/05/2011 01:21 PM 4,235 1-16332-1049340.psa
10/05/2011 01:21 PM 3,135 1-16332-1049926.psa
10/05/2011 01:21 PM 4,657 1-16332-1054756.psa
驱动器C中的卷是Windows XP 6.6 卷序列号为AC12-84AA C:\Test目录 2011年5月10日下午3:17。 2011年5月10日下午3:17。。 2011年5月10日01:21下午4393 1-16332-1008261.psa 2011年5月10日01:21下午4863 1-16332-1011698.psa 2011年5月10日01:21下午4793 1-16332-1023151.psa 2011年5月10日01:21下午49161-16332-1035695.psa 2011年5月10日01:21下午45241-16332-1037029.psa 2011年5月10日01:21下午42351-16332-1049340.psa 2011年5月10日01:21下午31351-16332-1049926.psa 2011年5月10日下午1:21 4657 1-16332-1054756.psa 但是,当我运行脚本时,它会失败,并显示一条无效语法的消息。有人能帮我找出哪里出了问题吗

我所要做的就是从旧文件中获取日期、时间和文件名,而不将扩展名写入新文件

谢谢你的时间,谢谢

Sanders.

如果您的
echo
确实在单独的一行上(而且它不是编辑过程中的人工制品),您就不能这样做。您将需要使用一行或:

FOR /F "tokens=1,2,4 skip=7" %%A in (C:\list_of_psa_files.txt) DO (
    @echo %%A %%B %%C 
)
当我创建您显示的文件和脚本时,我得到:

The syntax of the command is incorrect.
然后,当我将其更改为建议的变体时,它会输出:

10/05/2011 01:21 4,393
10/05/2011 01:21 4,863
10/05/2011 01:21 4,793
10/05/2011 01:21 4,916
10/05/2011 01:21 4,524
10/05/2011 01:21 4,235
10/05/2011 01:21 3,135
10/05/2011 01:21 4,657
正如所料。在一行上使用以下命令执行操作时,将显示相同的输出:

FOR /F "tokens=1,2,4 skip=7" %%A in (C:\list_of_psa_files.txt) DO @echo %%A %%B %%C 

但当我尝试将输出重定向到另一个文件时,我只得到了一行。像这样-10/05/2011 01:10 24971,代码是SETLOCAL EnableDelayedExpansion:MAIN for/F“tokens=1,2,4 skip=5”%%A in(C:\list_of_psa_files.txt)DO(@echo%%A%%B%%C>C:\list_of_file_ts.txt)退出这是另一个问题,@user982201,但我还是会帮你解决的。您正在为每个迭代执行
blah blah>out.txt
。换句话说,每次迭代都会覆盖文件,这意味着您将只获得最后一个文件。在
for
语句之前执行
del out.txt
以清空它,然后使用
>
而不是
,这样每次迭代都会追加其数据,而不是覆盖它。+1如果它是一个不长的单个命令,为了保存数字树,请使用一行。在这种情况下,阅读一行代码时不需要使用三行代码同样有效。@user982201,不要忘记按回答问题的答案旁边的勾号。