Пакетная переменная в выпуске списка задач - PullRequest
0 голосов
/ 28 декабря 2018

Итак, у меня в настоящее время есть простой скрипт резервного копирования, который запускается только в том случае, если в настоящий момент запущен исполняемый файл игрового сервера.Я использую переменную вверху для имени исполняемого файла для проверки, но по какой-то причине она не работает.

set SERVER_EXECUTABLE_NAME="DayZServer_x64.exe"
set SERVER_BACKUP_DIRECTORY=""
set BACKUP_DIRECTORY=""

echo Checking if server is running...

tasklist /FI "IMAGENAME eq %SERVER_EXECUTABLE_NAME%" /FI "STATUS eq RUNNING" | find /I "%SERVER_EXECUTABLE_NAME%" > nul && ( 
    echo Backing up files...
    robocopy "%SERVER_BACKUP_DIRECTORY%" "%BACKUP_DIRECTORY%\%date:/=-% %time::=-%" /mir /s /w:0 /r:1
) || (
    echo Server is not running, skipping backup...
)

Следующий код не работает.По какой-то причине отображается следующая ошибка: Файл не найден - DAYZSERVER_x64.EXE

Я что-то не так делаю?Если я удаляю переменные в вызове списка задач и помещаю имя исполняемого файла прямо там, оно работает нормально.

1 Ответ

0 голосов
/ 28 декабря 2018

Это было вызвано простой ошибкой кода с начальной командой SET.То, как вы его отформатировали, неверно для ваших целей.

Как есть, set SERVER_EXECUTABLE_NAME="DayZServer_x64.exe" приводит к SERVER_EXECUTABLE_NAME равному "DayZServer_x64.exe" - это приведет к IMAGENAME eq %SERVER_EXECUTABLE_NAME%, равному IMAGENAME eq "%SERVER_EXECUTABLE_NAME%", что означаетхорошо, НО Ваша функция НАЙТИ уже цитируется, поэтому она выглядит как ""%SERVER_EXECUTABLE_NAME%"" Но в CMD это DayZServer_x64.exe НЕ "DayZServer_x64.exe".

В конце концов, я верю в то, что выимел в виду, чтобы сделать было правильно:

set "SERVER_EXECUTABLE_NAME=DayZServer_x64.exe"

FixedBatch:

set "SERVER_EXECUTABLE_NAME=DayZServer_x64.exe"
set "SERVER_BACKUP_DIRECTORY="
set "BACKUP_DIRECTORY="

echo Checking if server is running...

tasklist /FI "IMAGENAME eq %SERVER_EXECUTABLE_NAME%" /FI "STATUS eq RUNNING" | find /I "%SERVER_EXECUTABLE_NAME%" > nul && ( 
    echo Backing up files...
    robocopy "%SERVER_BACKUP_DIRECTORY%" "%BACKUP_DIRECTORY%\%date:/=-% %time::=-%" /mir /s /w:0 /r:1
) || (
    echo Server is not running, skipping backup...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...