У меня есть партия и я запускаю другую с первой, и я заметил, что вторая партия запускается много раз за 1 секунду. Некоторые другие с 1-минутным аппартом, даже если я использую TIMEOUT /T 1000

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

start /B batch.bat
call batch.bat
start cmd /c "batch.bat"

Если я использую этот скрипт, он запускает пакет 6 раз в 1 секунду, но он должен только 1 раз.

set startdir=%cd%
for /d %%i in (*) do (
    cd %%i
    if exist "new_copy_sendmail.bat" call "new_copy_sendmail.bat"
    cd %startdir%
)

1 ответ1

0

Он запускается один раз для каждой папки, содержащей пакетный файл с этим именем, и один раз для каждой папки с пробелом или специальным символом в нем, если пакетный файл также существует в startdir поскольку cd завершится ошибкой, если в папке есть пробел или специальный символ ( как амперсанд). Вы можете это исправить, изменив вызов cd в cd "%%~i" вместо этого. Этот синтаксис позволит вам cd - диск в каталоги с пробелами или другими специальными символами.

Более чистый метод - запускать его только для определенных файлов, а не переходить в подкаталоги с forfiles . Это будет выполняться только один раз для каждого файла new_copy_sendmail.bat в текущем каталоге или любом подкаталоге.

forfiles /m "new_copy_sendmail.bat" /S /C "cmd /c call @relpath"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .