Y2k18
Новый пользователь
- Сообщения
- 22
- Реакции
- 0
Я пытаюсь сделать батник, который будет запускаться с системой через планировщик (независимо от способа запуска системы - или это будет запуск, или выход из гибернации), мониторить появление процесса эмулятора после первого ручного запуска, запускать процесс копирования через промежуток времени и перезапускать эмулятор, если эмулятор будет крашиться. В общем-то раньше в треде gpt дал рабочий вариант, но хотелось бы скрыть окно консоли, чтобы во время работы батника он висел в диспетчере задач, а не маячил развёрнутым/свёрнутым на рабочем столе. Я попробовал nircmd всунуть вместо /start, и получил бесконечный запуск эмулятора.разве утилита прописана в PATCH? Чем менее подробна задача, тем хуже результат, бесконечный цикл, так и задуман?
Разумеется, я не задумывал бесконечный цикл и в корне не догоняю, как от него избавиться. Про PATCH я тоже не совсем понял, погуглил - вроде надо просто закинуть nircmd.exe в каталог Windows, и всё. Видимо, батник что-то делает не так, только не могу понять что именно.
CMD/BATCH:
@echo off
setlocal enabledelayedexpansion
:: Установите путь к Xenia
set "XENIA_PATH=G:\Soft\XeniaCanary\xenia_canary.exe"
set "source=G:\Soft\XeniaCanary\content"
set "destination=D:\Saves\XBOX360"
set "process_name=xenia_canary.exe"
:: Ожидание ручного запуска Xenia
start /B "" cmd /c "echo %time:~,-3% Пожалуйста, запустите Xenia вручную."
:waitForXenia
tasklist /FI "IMAGENAME eq %process_name%" 2>NUL | find /I /N "%process_name%" >NUL
if "%ERRORLEVEL%"=="0" (
goto monitorXenia
) else (
timeout /t 5 > NUL
goto waitForXenia
)
:monitorXenia
:: Мониторинг Xenia
:checkXenia
tasklist /FI "IMAGENAME eq %process_name%" 2>NUL | find /I /N "%process_name%" >NUL
if "%ERRORLEVEL%"=="0" (
timeout /t 10 > NUL
goto checkXenia
) else (
echo %time:~,-3% Xenia закрыта. Перезапуск...
start "" "%XENIA_PATH%"
timeout /t 10 > NUL
goto checkXenia
)
:: Копирование всех папок каждые 30 минут
:copyFolders
for /d %%D in ("%source%\*") do (
set "folderName=%%~nxD"
set "shortName=!folderName:~0,8!" rem Получаем первые 8 символов имени папки
set "destFolder=!shortName! !folderName:~9!" rem Остальная часть имени после первых 8 символов
set "destPath=%destination%\!destFolder!" rem Формируем путь назначения
rem Копируем папку, если она существует в каталоге назначения
if exist "!destPath!" (
robocopy "%%D" "!destPath!" /E /COPY:DAT /MINAGE:1 /XD "Thumbs.db" /R:0 /W:0
)
)
echo %time:~,-3% Ожидание 30 минут перед следующим выполнением...
timeout /t 1800 > NUL rem 1800 секунд = 30 минут
goto copyFolders
endlocal
Последнее редактирование: