【发布时间】:2012-04-13 15:58:17
【问题描述】:
我尝试编写简单的程序。它应该找到 .pak 文件(在本例中为 zip,但更改了 etension),提取它们并使用 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
同样的结果
【问题讨论】:
-
用 DOS 批处理文件做任何稍微复杂的事情都是一件痛苦的事情。你能切换到 PowerShell 吗?如果是这样,我建议调查一下。
-
不,因为我想做任何人都可以使用的“反向”程序,而无需安装额外的东西。
-
是否有任何子子文件夹?
标签: loops batch-file