Windows 批处理:双击时的错误行为 - 在提示时工作正常

Windows Batch : Wrong behavior when double clicked - Works fine on prompt

问题是我做了那个但没有工作

如果我转到提示并调用 file.bat,此脚本 运行 没问题,获取所有文件 *.gsc 并清除没有该字符串的行。

但是当我双击时没有按预期工作,每次我 运行 连第一个文件都被删除,剩下的 none 个文件被清理了。 :\

@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

并替换“!”的变量而不是“%”,但我做错了什么...你能帮我指出我需要更改的确切内容,以便双击也能正常工作吗?

谢谢!

好吧,经过几个小时的尝试,我现在终于可以双击了。这里是最终代码:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
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"
            )
)

干杯