¿Cómo utilizar las condiciones IF ELSE e IF NOT en el mismo archivo por lotes?

¿Cómo utilizar las condiciones IF ELSE e IF NOT en el mismo archivo por lotes?

Uso de un lote para realizar una copia de seguridad de un directorio (Chrome). Estoy usando el Administrador de tareas de programación nativo de Windows para hacer ping y ejecutar el archivo (funciona muy bien). Sin embargo, si me voy a la cama (olvidándome de apagar Chrome), naturalmente no obtengo una copia de seguridad completa.

Por lo tanto, agregué el archivo else if, sin embargo, si cierro Chrome, el archivo se ejecuta, pero está bastante "sucio". ¿Cómo puedo agregar un "si no"? ¿Lo anido dentro del else if?

Esto es lo que estoy ejecutando, nuevamente funciona (independientemente de si Chrome está apagado o no), pero no está "limpio". Me gustaría dejarlo limpio, es decir, mostrando un error como "Chrome no existe".

IF EXIST CHROME COMMAND (
    set drive=C:
    echo ### Killing Chrome Task
    taskkill  /F /IM chrome.exe /T
    PING 1.1.1.1 -n 1 -w 60000 >NUL
)
ELSE (
    :: variables 
    set drive=E:\BrowserBackups\Chrome
    set folder=%DATE:~4,2%_%DATE:~7,2%_%DATE:~10,4%_%RANDOM%
    set backupcmd=xcopy /C/E/H/I/R/K/Y
    echo ### Backing up directory...
    %backupcmd% "%USERPROFILE%\Local Settings\Application Data\Google\Chrome"
                "%drive%\%folder%"
)
pause

No estoy seguro de dónde colocar el comando "SI NO EXISTE".

Respuesta1

Estructura tu archivo por lotes de esta manera:

@echo off
tasklist /fi "imagename eq chrome.exe" 2>NUL | find /c /i "chrome.exe">NUL
if [%errorlevel%]==[0] (
    echo Chrome is running!
    echo Kill it and then backup settings.
) else (
    echo Chrome is not running!
    echo Can backup settings now.
)

información relacionada