我已经完成了一个批处理文件,可以使用批处理打印多个文件的第一行。但它只打印其中一个文件的第一行,但是打印的次数与我拥有的文件数一样多。
我的意思是,FOR循环的次数与我拥有的文件数一样多,但变量 firstline 总是具有相同的值。
我知道我错过了一些愚蠢的事情,我已经尝试了几个小时的不同组合,并且看了几个小时没有结果的stackoverflow条目。
这是我的代码:
for %% F in(* .trn)do set / p firstline =< %% F& echo%firstline%
答案 0 :(得分:0)
缺少的关键部分是FOR循环中的call
语句(是的,它确实是一些愚蠢的东西)。我可以确认“快速修复”将按要求打印每个文件的第一行:
for %%F in (*.trn) do set /p firstline=<%%F & call echo %%firstline%%
关于Delayed Variable Expansion的建议很好。该版本将如下所示:
setlocal enabledelayedexpansion
for %%F in (*.trn) do set /p firstline=<%%F & echo !firstline!
endlocal
答案 1 :(得分:0)
感谢@Compo和@Jonathan的回答,你帮我完成了这个程序。
事实上,这个问题是该计划的一部分,我分享了最终的计划,也许它对寻找类似解决方案的人有用。
我正在做一个程序,如果第一行中的数字,目录中的文件大于46000,它会将文件复制到另一个目录。这是最终版本:
setlocal EnableDelayedExpansion
For %%A In (*.trn) Do Set/P firstline=<%%A & if !firstline! GTR 46000 move "c:\temp\number\B1\%%A" "c:\temp\number\B2\%%A"