Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用Windows批处理文件按文件夹分组多个拆分RAR存档_Batch File - Fatal编程技术网

Batch file 使用Windows批处理文件按文件夹分组多个拆分RAR存档

Batch file 使用Windows批处理文件按文件夹分组多个拆分RAR存档,batch-file,Batch File,假设我有一个文件夹“C:\pokepoke”,其中包含以下档案: trequetry.part01.rar trequetry.part02.rar trequetry.part03.rar 及 等等。我如何才能使第一组归档文件在C:\pokepoke\trequetry中结束,第二组归档文件在C:\pokepoke\replokitro中结束,依此类推。所以基本上是过滤X.partX.rar或者其他类似的东西 我正在尝试使用par2批量创建恢复文件,用于大量拆分的归档文件,因此除了我的主要问

假设我有一个文件夹“C:\pokepoke”,其中包含以下档案:

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

等等。我如何才能使第一组归档文件在
C:\pokepoke\trequetry
中结束,第二组归档文件在
C:\pokepoke\replokitro
中结束,依此类推。所以基本上是过滤X.partX.rar或者其他类似的东西

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

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

为了帮助您回答第一个问题,以下脚本适用于我:

@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"

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

这些问题都很好,但我认为应该单独发布。可能会帮助你回答第二个问题,关于
foreach
(子文件夹)的问题。@Andriy这对我来说是一个非常有用的链接,Andriy,谢谢。我“修复”了我的主要问题,修改了winrar批处理脚本,以便在存档后自动将文件放置在子文件夹中,但我仍然希望找到一个关于如何使用现有存档执行此操作的答案。
SET "origloc=%~1"