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"
)
)
干杯
问题是我做了那个但没有工作
如果我转到提示并调用 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"
)
)
干杯