使用Batch打印多个文件的第一行

时间:2017-06-13 11:23:37

标签: batch-file

我已经完成了一个批处理文件,可以使用批处理打印多个文件的第一行。但它只打印其中一个文件的第一行,但是打印的次数与我拥有的文件数一样多。

我的意思是,FOR循环的次数与我拥有的文件数一样多,但变量 firstline 总是具有相同的值。

我知道我错过了一些愚蠢的事情,我已经尝试了几个小时的不同组合,并且看了几个小时没有结果的stackoverflow条目。

这是我的代码:

  

for %% F in(* .trn)do set / p firstline =< %% F& echo%firstline%

2 个答案:

答案 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"