批处理文件夹中的文件

时间:2018-12-18 16:31:53

标签: batch-file for-loop batch-processing

所有,我是一个新手,对脚本有一点了解。 我做了这个.bat,效果很好:

for /l %%x in (1, 1, 4) do (
echo %%x
type A%%x.xml + tail.xml >> v%%x.stage
)

它执行4次循环,合并文件夹内的xml文件。 .bat与要合并的xml位于同一文件夹中。

但是,如果要执行10循环,则需要手动编辑数字4。 有什么办法可以使用文件夹中的文件数量进行循环吗? 假设文件夹中有15个.xml文件,因此循环将运行15次。 我已经尝试过在堆栈溢出时发现的不同循环代码,但无法使它们工作:( 你能帮我吗?

非常感谢

更新: 谢谢@Squashman,所以我的代码现在应该是这样吗?

for %%x IN (*.xml) do set /a count+=1
echo %%x
type A%%x.xml + tail.xml >> v%%x.stage

1 个答案:

答案 0 :(得分:0)

如果保证数字范围是连续的, Squashman的建议会奏效。

要获得独立于任何可能差距的最高数量,您可以使用:

:: Q:\Test\2018\12\18\SO_53837368.cmd
@Echo off&SetLocal EnableDelayedExpansion
set "Max=0"
For /f "delims=a." %%A in ('Dir /B "a*.xml"') do (
    Set /A "Num=%%A"
    if !Num! gtr !Max! set "Max=!Num!"
)
Echo Max number is: %Max%

它将文件名在扩展名的前导a和点之间进行分隔,并保留唯一编号。
Set / A用于排除与非数字值可能的不匹配。