batch file对多个目录中的所有文件执行命令

我想创build一个运行这个命令的batch file

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 \,但将驻留在几个不同的子文件夹。 (旧目录)另外,我需要创build文件夹\新目录\(它将具有相同的名称作为老目录)在命令运行(运行?)。 这是我到目前为止:

 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,所以我确信它相对简单。 任何帮助将不胜感激。

 @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的名称和eXtension。 这很可能不会延长 – 这是无害的