批处理文件,用于对多个目录中的所有文件执行命令

时间:2013-03-12 00:13:52

标签: windows command-line for-loop batch-file batch-processing

我想创建一个运行此命令的批处理文件:

C:\Program Files (x86)\IrfanView\i_view32.exe" "C:\Users\digi_admin\TIFFs\
OLD DIRECTORY\*.tif" /ini="C:\Users\digi_admin\Documents\" /advancedbatch /tifc=4  
/convert="C:\Users\digi_admin\CompTIFs\Some Folder\NEW DIRECTORY\*.tif"

在多个文件夹中的所有文件上。所有文件都将位于\ TIFFs \中,但将驻留在几个不同的子文件夹中。 (OLD DIRECTORY)我还需要在运行命令(运行?)之前创建文件夹\ NEW DIRECTORY \(它与OLD DIRECTORY具有相同的名称)。以下是我到目前为止的情况:

FOR /D %d IN ("C:\Users\digi_admin\TIFFs\*.*") DO "C:\Program Files 
(x86)\IrfanView\i_view32.exe" %d\*.tif /ini="C:\Users\digi_admin\Documents\" 
/advancedbatch /tifc=4 /convert="C:\Users\digi_admin\CompTIFs\Some Folder\%d\*.tif"

我一直在命令行中尝试它,所以%d应该是%% d。我不熟悉DOS,所以我相信它相对简单。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET destroot=C:\Users\digi_admin\CompTIFs
FOR /D %%d IN ("%destroot%\*") DO (
MD "%destroot%\%%~nxd" 2>nul

"C:\Program Files (x86)\IrfanView\i_view32.exe" "%%d\*.tif" /ini="C:\Users\digi_admin\Documents\" /advancedbatch /tifc=4 /convert="%destroot%\%%~nxd\*.tif"
)

现在 - 假设'/ convert'是目标文件规范。

注意:

  • 我已将目标根设置为变量 - 进行输入 更容易
  • 2> nul会抑制生成的错误消息 目标目录已存在
  • %% ~nxd表示%% d中的Name和eXtension。很可能, 扩展名不存在 - 这是无害的