if-config 2024-02-19 15:44 采纳率: 0%
浏览 8

IF NOT EXSIT "路径\文件名" 出现问题

写了个bat脚本

set /a retry_script_count=0
set /a retry_count=0
set /a process_count = 0
set /a vmware_process_txt_count = 0
set /a vmrun_count = 0
:command_loop
vmrun stop "D:\VMware\VMLib\hengFengBankClone\hengFengBankOne.vmx" soft
:check_process
tasklist /FI "IMAGENAME eq vmware-vmx.exe" 2>NUL | find /I /N "vmware-vmx.exe">C:\Users\admin\Desktop\vmware_process.txt
IF NOT EXIST "C:\Users\admin\Desktop\vmware_process.txt"(
pause
    IF %vmware_process_txt_count% EQU 3(
        set /a vmrun_count+=1
        goto:command_loop
    )
    IF %vmrun_count%     EQU 3(
        exit /b 1
    )
    set /a vmware_process_txt_count = 0
    goto:check_process
)
pause

情况是,

tasklist /FI "IMAGENAME eq vmware-vmx.exe" 2>NUL | find /I /N "vmware-vmx.exe">C:\Users\admin\Desktop\vmware_process.txt

vmware_process.txt 文件正常创建,脚本中的2个pause均不停顿
求有经验的解决问题,

  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-19 15:52
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    根据您描述的情况,问题似乎出在判断文件是否存在的地方。您使用了 IF NOT EXIST 来判断文件是否存在,但是即使文件存在,脚本也会进入括号内的代码块。这可能是由于文件路径中包含空格或其他特殊字符导致的问题。

    为了解决这个问题,您可以在文件路径外部加上引号,这样就可以正确处理包含空格或特殊字符的路径。下面是修改后的脚本:

    :command_loop
    vmrun stop "D:\VMware\VMLib\hengFengBankClone\hengFengBankOne.vmx" soft
    
    :check_process
    tasklist /FI "IMAGENAME eq vmware-vmx.exe" 2>NUL | find /I /N "vmware-vmx.exe">"C:\Users\admin\Desktop\vmware_process.txt"
    IF NOT EXIST "C:\Users\admin\Desktop\vmware_process.txt" (
        pause
        IF %vmware_process_txt_count% EQU 3 (
            set /a vmrun_count+=1
            goto :command_loop
        )
        IF %vmrun_count% EQU 3 (
            exit /b 1
        )
        set /a vmware_process_txt_count = 0
        goto :check_process
    )
    pause
    

    在这个修改后的脚本中,我给 IF NOT EXIST 中的文件路径加上了引号,确保路径被正确地识别。这样脚本就可以正常地检测文件是否存在了。

    img

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    评论

报告相同问题?

问题事件

  • 创建了问题 2月19日