如何在Windows

时间:2015-04-28 08:50:38

标签: windows batch-file dos

我有一个文件ad.exe,它对同一文件夹中的文本文件进行操作。 它位于D:/.../ bin。执行时,它从文件8000.txt读取数据并创建98.txt。我有很多文件夹,每个文件夹包含8000.txt。我希望exe文件在每个文件夹中的每个8000.txt上执行操作。所有这些8000.txt文件都位于桌面上单个文件夹中的多个文件夹中。 我想避免将同一个文件复制到每个文件夹中,并逐个执行它们。我想立刻做所有工作。 我该怎么办?

我读过 batch file to execute a command on all files in multiple directories 但无法理解。

2 个答案:

答案 0 :(得分:0)

简单的答案是FOR loop,DOS通过使用For /?和阅读来访问内联帮助。打开两个CMD窗口并使用一个用于帮助,第二个用于尝试命令。提示:使用ECHO仅在DOS中显示文本,而不是将命令作为测试运行。

执行此操作的快捷方法是创建文本文件列表。使用dir /s /b *.txt >> c:\output.log这将创建一个文件,其中包含所有子文件夹中每个文本文件的列表。

接下来是FOR loop

FOR /f %a in (output.log) do echo %a

FOR将打开output.log并阅读每一行。每行由%a表示,简单地写入控制台。如果命令为do dir %a,则命令将在DIR

中的每个文件上运行output.log

只需根据您的需要进行调整,如果有任何错误,请回发。

答案 1 :(得分:0)

FOR /F "usebackq" %f IN (`DIR /S /B 8000.txt`) DO (myprog.exe "%f")

如果将其放入.bat或.cmd脚本中,请确保将文件名变量上的百分比加倍。

FOR /F "usebackq" %%f IN (`DIR /S /B 8000.txt`) DO (
    myprog.exe "%%f"
)