に罰金作品すべてのファイル* .gscを削除し、その文字列を含まない行を削除します。Windowsのバッチ:ダブルクリック間違った行動 - 質問は、私はそれをしたし、このスクリプトは私がプロンプトに移動し、FILE.BATを呼び出す場合、取得細かい実行されている</p> <p>を働いていないEXACTLYということですプロンプト
しかし、ダブルクリックしたときに期待通りに動作せず、実行するたびに最初のファイルも削除され、残りのファイルは消去されませんでした。 :\
@echo off
set "string_to_find=level.waypoints\["
for /f "tokens=*" %%a in ('dir /B *.gsc') do (
set "tempfile=%temp%\%%a"
if exist "%tempfile%" del "%tempfile%" >NUL
findstr /C:"%string_to_find%" "%~dp0\%%a" >> "%tempfile%"
if not errorlevel 1 (
del "%%a" >NUL
move /Y "%tempfile%" "%~dp0\%%a" >NUL
if exist "%tempfile%" del "%tempfile%" >NUL
echo File "%~dp0\%%a" processed successfully
) else (
echo Problem processing file "%~dp0\%%a"
)
)
私はすでに
setlocal enableDelayedExpansion
を使用し、またためVARSを置き換えるためにしようと試みました "!" "%"の代わりに、私は何か間違っています...私は私がダブルクリックでもこの仕事をするために変更する必要があるものを指すのを助けることができますか?
ありがとうございました!
可能な複製([バッチ文はforループで動作しない場合] https://stackoverflow.com/questions/45638465/batch-if-statement-not-作業中のループ) – JosefZ
私の質問は、私はそれを試して働いていないと言っていました、何か間違っています...重複しません。問題は持続する。 – Hajas
バッチファイルもコマンドプロンプトウィンドウから実際に実行されないため、重複しています。バッチファイルの最初の実行時に、 '%tempfile%'のすべての出現は、__FOR__コマンドを実行する前に何も置き換えられません。同じコマンドプロンプトウィンドウでバッチファイルの2回目の実行時に、この環境変数のために、最初の2回目のバッチファイル実行時に__FOR__コマンドを実行する前に、前のバッチファイル実行から最後のループ実行時に割り当てられた最後の値で置き換えられます以前のバッチファイルの実行からは依然として存在します。 – Mofi