Я пишу пакетный скрипт, который проверяет, открыт ли FireFox, затем, в зависимости, копирует профиль в другую папку (в основном, резервная копия).
Сценарий ниже работает, если FF закрыт, но не открыто. Если он открыт, когда я запускаю его, я всегда получаю ответ ELSE ()
в конце и не могу понять, почему. Я довольно новичок в пакетных файлах, но искал вокруг и не могу понять, почему это не работает. Моя догадка - errorlevel
, поэтому value
не устанавливается должным образом ...
set source = "C:\users\someUser\someFolder\FireFox\Profiles\wszashe.default"
set destination = "C:\users\someUser\someOtherFolder\"
@echo off
tasklist /FI "IMAGENAME eq firefox.exe" 2>NUL | find /I /N "firefox.exe">NUL
IF "%ERRORLEVEL%"=="0" (
echo wscript.quit MsgBox("Want to close FireFox?", 4, "Please choose."^) > yesno.vbs
wscript //nologo yesno.vbs
set value = %ERRORLEVEL%
del yesno.vbs
) ELSE (
robocopy %source% %destination% /e
cls
echo Profile Backed up.
Exit
)
If "%value%"=="6" (
taskkill /im "firefox.exe"
robocopy %source% %destination% /e
start "" "C:\Program Files\FireFox\firefox.exe"
echo FireFox restarted.
) ELSE ( # This always seems to execute even if I choose "yes" from the msgbox above.
echo wscript.quit MsgBox("Will not close FF and not back up profile.", 0, "Keep open"^) > nocopy.vbs
wscript //nologo nocopy.vbs
del nocopy.vbs
)
Если FireFox закрыт, он запускает блок, в который копирует папку, и затем выходит из script.
Однако, если он открыт, я не уверен, как получить %valueerror%
для чтения. Если FireFox открыто, я просто хочу спросить пользователя, хотят ли они, чтобы оно было закрыто или нет. Если это так, то завершите процесс, скопируйте информацию и перезапустите его. В противном случае просто покажите простое сообщение о том, что оно не закроется, и завершите сценарий.