我试着写简单的程序。它应该找到.pak文件(在这种情况下是zip,但是有更改的扩展),提取它们并使用arc打包它们。
@echo off
for /r %%i in (*.pak) do ren %%~i %%~ni.arc
for /r %%i in (*.arc) do (
mkdir %%~ni
cd %%~ni
..\arc.exe x -o+ "%%~i" //extract archive at current location//
del "%%~i"
..\arc.exe a -m9 -r "%%~i" *.* //pack files and folders in current folder and create
archive at specific location//
cd..
RD /s /q %%~ni
)
pause
Arc命令可以解决这个问题。一切都很完美,直到后来很少。它似乎突然停止执行cd ..命令,因为它开始创建文件夹然后文件夹然后一次又一次。
文件位置:
... \ arc.exe
... \ program.bat
... \ file1.pak
... \ folder1 \ file2.pak
... \ folder2 \ file3.pak
包等
我也尝试了
@echo off
setlocal enableextensions enabledelayedexpansion
for /r %%i in (*.pak) do ren %%~i %%~ni.arc
for /r %%i in (*.arc) do (
mkdir %%~ni
cd %%~ni
..\arc.exe x -o+ "%%~i"
del "%%~i"
..\arc.exe a -m9 -r "%%~i" *.*
cd..
RD /s /q %%~ni
)
pause
相同的结果
答案 0 :(得分:0)
您绝对不希望启用延迟扩展,因为如果文件名恰好包含!
字符,它会损坏文件名。
我相信你的问题只是你没有引用你的路径/文件名。除非引用它们,否则路径/名称中的空格和特殊字符将导致问题。
这是完全未经测试的,但我认为这可能会解决您的问题:
@echo off
for /r %%i in (*.pak) do ren "%%i" "%%~ni.arc"
for /r %%i in (*.arc) do (
mkdir "%%~ni"
cd "%%~ni"
..\arc.exe x -o+ "%%~i" //extract archive at current location//
del "%%i"
..\arc.exe a -m9 -r "%%i" *.* //pack files and folders in current folder and create archive at specific location//
cd..
rd /s /q "%%~ni"
)
pause