Вопрос:

Как запустить пакетный скрипт неблокирования WIN98

batch-file ping xcopy windows-98

23 просмотра

1 ответ

95 Репутация автора

Я пытался написать пакетный скрипт, который непрерывно копирует три файла в определенный каталог. Это необходимо, поскольку другой скрипт (который не находится под моим контролем) удаляет определенные файлы каждые несколько секунд.

ВАЖНО: это под Windows98!

Я достиг этого с бесконечной петлей. Проблема в том, что вся система больше не может использоваться, поскольку команда sleep, по-видимому, не является неблокирующей.

Я пробовал несколько способов сделать короткий перерыв в цикле:

  • Я пробовал спать и millisleep.exe - оба блокировали
  • Я попробовал трюк с выполнением команды ping на localhost -> блокировка

Вот мой код

@echo off
:loop

xcopy C:\WINDOWS\Desktop\FOLDER_B\a.bin C:\WINDOWS\Desktop\FOLDER_A\a.bin* /Y
xcopy C:\WINDOWS\Desktop\FOLDER_B\b.bin C:\WINDOWS\Desktop\FOLDER_A\b.bin* /Y
xcopy C:\WINDOWS\Desktop\FOLDER_B\c.bin C:\WINDOWS\Desktop\FOLDER_A\c.bin* /Y
sleep 1

goto loop

Мне нужно, чтобы скрипт работал в фоновом режиме (если он существует в WIN98), и другие приложения не зависают все время.

Если возможно, я хочу избежать написания скомпилированного скрипта.

Существуют ли какие-либо команды yield или другие команды, которые не блокируют всю систему во время «ожидания»?

Автор: user1894572 Источник Размещён: 02.08.2019 06:29

Ответы (1)


0 плюса

61 Репутация автора

Если у вас есть Timeoutкоманда, вы можете заменить sleepна Timeout.

Вот мой метод:

@echo off
:loop

xcopy C:\WINDOWS\Desktop\FOLDER_B\a.bin C:\WINDOWS\Desktop\FOLDER_A\a.bin* /Y
xcopy C:\WINDOWS\Desktop\FOLDER_B\b.bin C:\WINDOWS\Desktop\FOLDER_A\b.bin* /Y
xcopy C:\WINDOWS\Desktop\FOLDER_B\c.bin C:\WINDOWS\Desktop\FOLDER_A\c.bin* /Y
timeout /t 5 /nobreak >nul

goto loop
Автор: scientist_7 Размещён: 11.08.2019 08:22
Вопросы из категории :
32x32