使用FOR或FORFILES批处理命令来单独存档特定文件

我有一组.iso文件在不同的目录和子目录中:

<folder1> app1.iso app2.iso app3.iso <subfolder1> app1a.iso app2a.iso <subfolder2> app2b.iso app3b.iso <folder2> app4.iso app5.iso <subfolder5> app20.iso 

使用batch file并预先安装了7-zip(使用configuration的PATH环境variables),我希望能够将每个.iso归档到它自己的.7z归档文件中。 我不想将当前文件夹中的所有.iso文件归档到一个归档文件中。

我试图与FORFILES一起创build自己的7-zip命令:

 FORFILES /P . /M *.iso /S /C "cmd /c 7z a -t7z @path.7z -mx9 -mmt >> C:\test\7z-log.txt" 

但是,这是做什么的:

 app1.iso.7z - contains: app1.iso, app2.iso, app3.iso app2.iso.7z - contains: app1.iso.7z, app1.iso, app2.iso, app3.iso app3.iso.7z - contains: app1.iso.7z, app2.iso.7z, app1.iso, app2.iso, app3.iso app1a.iso.7z - contains: app1a.iso, app2a.iso app2a.iso.7z - contains: app1a.iso.7z, app1a.iso, app2a.iso ... 

我想要的是(每个在他们的相关文件夹或子文件夹中):

 app1.iso.7z - contains: app1.iso app2.iso.7z - contains: app2.iso app3.iso.7z - contains: app3.iso app1a.iso.7z - contains: app1a.iso ... 

任何人都可以帮助我的批处理命令?

 @ECHO OFF SETLOCAL SET "sourcedir=U:\sourcedir" FOR /f "delims=" %%a IN ( 'dir /s/b /ad "%sourcedir%\*.iso" ' ) DO ( ECHO(7z a -t7z "%%~fa.7z" "%%~fa" -mx9 -mmt ) GOTO :EOF 

您需要更改sourcedir的设置以适应您的情况。

为了测试目的,所需的7z命令仅仅是ECHO在确认命令正确后 ,将ECHO(7z更改为7z以实际存档文件。

请注意,重定向到日志丢失。 这样做是为了允许将建议的操作显示在屏幕上。