0

簡単なプログラムを書いてみました。.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

同じ結果

4

1 に答える 1

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
于 2012-04-13T17:41:06.510 に答える