使用Windows批处理文件按文件夹对多个拆分RAR存档进行分组

时间:2011-09-03 00:41:15

标签: batch-file

假设我有一个文件夹“C:\ pokepoke”,其档案如:

trequetry.part01.rar
trequetry.part02.rar
trequetry.part03.rar

replokitro.part01.rar
replokitro.part02.rar
replokitro.part03.rar
replokitro.part04.rar

等等。如何制作,以便第一组档案在C:\pokepoke\trequetry中结束,第二组在C:\pokepoke\replokitro中结束,依此类推。所以基本上过滤X.partX.rar或那个方向。

我正在尝试使用par2批量创建用于大量拆分归档的恢复文件,因此除了我的主要问题之外,我还想了解如何在所有子文件夹上执行for-each在C:\pokepoke中,所以我可以在所有档案移动到各自的文件夹后在其上运行以下代码:

FOR /R %%g IN (.) DO C:\WINDOWS\par2.exe c -r10 -s384000 "%%g\%%~ng.par2" "%%g\*"
del /q *.par2

1 个答案:

答案 0 :(得分:2)

为了帮助您解决第一个问题,以下脚本对我有用:

@ECHO OFF
SET "origloc=D:\path\to\archives"
FOR %%F IN ("%origloc%\*.part*.rar") DO CALL :process "%%F"
GOTO :EOF

:process
CALL :checkpath "%~dpn1"
MOVE %1 "%subfolder%" >NUL
GOTO :EOF

:checkpath
SET "subfolder=%~dpn1"
IF NOT EXIST "%subfolder%\" MKDIR "%subfolder%"
GOTO :EOF

此脚本搜索指定文件夹中的*.part*.rar个文件。它将~dpn修饰符应用于每个名称两次,以删除“双扩展名”.partNN.rar的名称,然后使用生成的名称作为子文件夹名称。

您可以选择更改第一个SET命令:

SET "origloc=%~1"

能够为任意路径调用脚本,将路径作为参数传递。