次のバッチ スクリプトを作成しました。このスクリプトは、別のバッチ スクリプトをディレクトリ上で実行するか、フラグを追加してディレクトリ ツリー上で実行し、次に別のドライブ (Z:) 上の同等のディレクトリまたはディレクトリ ツリー上で実行します。どのオプションを選択しても、「指定されたパスが見つかりません」というエラーが出力されます。エラーが発生しても、1つのディレクトリだけで実行すると、想定どおりに実行されます。ディレクトリ ツリーでは正常に動作しません。@echo off なしで実行して、失敗した場所を理解しようとしましたが、成功しませんでした。変更しようとしているディレクトリは存在します。
@echo off
set origdir=%CD%
if X%~f1==X (
echo Please input a directory.
goto done
)
chdir /d %~f1
for %%X in (myotherscript.bat) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo myotherscript is not in your PATH
)
if X%2==X/R (
goto recursive
) else ( goto single )
:recursive
for /d /r %%G in (.) do call myotherscript
echo Z:%~p1
chdir /d "Z:%~p1"
for /d /r %%G in (.) do call myotherscript
goto ended
:single
call myotherscript
echo Z:%~p1
chdir /d "Z:%~p1"
call myotherscript
goto ended
:ended
chdir /d origdir
goto done
:done
pause
ここに「myotherscript」があります。はい、パージは存在します。
@echo off
if exist "D:\path\to\purge.bat" (
call purge
for %%f in (*.log.*) do call :renameit "%%f"
for %%f in (*.drw.*) do call :renameit "%%f"
for %%f in (*.asm.*) do call :renameit "%%f"
for %%f in (*.prt.*) do call :renameit "%%f"
goto done ) else (
echo Purge does not exist.
goto done )
:renameit
ren %1 *.1
:done
どんな助けでも大歓迎です。ありがとう