批处理 - 回声是关闭问题

时间:2016-01-19 19:51:10

标签: windows batch-file

我已经检查了与我的问题相关的其他大量答案,但都没有奏效。我想这是一个语法错字,但我似乎无法找到它。

我的脚本应该只是告诉我进程是否正在运行,然后将路径保存到变量中,转到该路径并删除.exe

不幸的是,我得到ECHO is OFF。有什么想法吗?

@echo off
setlocal EnableDelayedExpansion

set /p PROGRAM=NAme of the exe:

tasklist /FI "IMAGENAME eq %PROGRAM%" 2>NUL | find /I /N "%PROGRAM%">NUL
if "%ERRORLEVEL%"=="0" echo. %PROGRAM% is running

for %%i in (%PROGRAM%) do (
    echo %%~$PATH:i
    set PROGRAM_PATH=%%~$PATH:i
)

cd %PROGRAM_PATH%

del /F %PROGRAM_PATH%

pause

1 个答案:

答案 0 :(得分:2)

所以,我意识到我的计划并没有做我想要的事情,因为.exe并不存在。

所以,我修改了一下脚本,以便我处理这种情况:

  • 如果.exe正在投放,请退出,因为我仍然无法删除已在使用中的.exe;
  • 否则转到其位置并将其删除。

我的最终计划:

@echo off
setlocal EnableDelayedExpansion
goto start_program

:start_program
    set /p PROGRAM=Name of exe(ex:cmd.exe):
    tasklist /FI "IMAGENAME eq %PROGRAM%" 2>NUL | find /I /N "%PROGRAM%">NUL

    if "%ERRORLEVEL%"=="0" do (
        goto enter_program
    )
    if "%ERRORLEVEL%"=="1" do (
        goto exit_program
    )

:enter_program
    for %%i in (%PROGRAM%) do (
        set PROGRAM_PATH=%%~$PATH:i
    )
    cd %PROGRAM_PATH%
    del /f %PROGRAM_PATH%
    goto:eof

:exit_program
    goto:eof

感谢Ryan和jeb的提示