У меня есть папка, в которой я храню свои скрипты Python, используемые для резервного копирования конкретной системы. Z:\Системный администратор\Резервные копии системы\Моя система\Сценарии\
Чтобы запустить их все, я хотел бы использовать файл .bat, хранящийся в той же папке, однако у меня нет опыта работы с этими файлами. Мое чтение привело меня к этому решению:
@echo off
start /B python "File one.py"
start /B python "It's another file.py"
И если я перечислю каждый файл python таким образом, он будет работать так, как я хотел бы. Как я могу запустить все файлы *.py, которые появляются в этой папке, независимо от номера или имени файла?
заранее спасибо
Спасибо за ваш быстрый ответ. Это запускается каждый по очереди или одновременно?
Он будет запускаться сразу, один за другим, но не дожидаясь завершения первого. Как вы хотите, чтобы он работал? один раз за другим, ожидая завершения одного или сразу?
По одному, пожалуйста. Спасибо за ваш быстрый ответ
Затем просто добавьте /wait. Нравится for %%i in (*.py) do start "" /b /wait python "%%i"
Сначала я бы посмотрел на это: Как что-то сделать с каждым файлом в каталоге с помощью пакетного скрипта
Обратите внимание, что start /b оставляет каждый процесс Python подключенным к консоли со стандартным вводом-выводом, все еще подключенным к нему. Вы можете перенаправить stdin на NUL и stdout/stderr в файл. Кроме того, поскольку Python все еще подключен к консоли, сочетание клавиш Ctrl+Break и закрытие окна приведет к резкому завершению сценария. Вы можете использовать ctypes для установки обработчика управления (SetConsoleCtrlHandler), который в этом случае завершается корректно. Тем не менее, как программист Python, я бы предпочел написать сценарий Python, который использует модуль подпроцесса, а не использовать пакетный сценарий.
Спасибо, это работает отлично.





Это возможно с помощью следующего трюка:
@echo off
for %%A IN (*.py) do start /b /wait "" python "%%~fA"
Примечание. Для более старых версий Windows (до Windows 10) используется порядок конкретный. , См. здесь.
Не желая показаться грубым, это почти наверняка дубликат тысяч ответов на этом сайте. Пожалуйста, не публикуйте подобные ответы только для того, чтобы заработать очки репутации, это не поможет никому, кроме вас самих, и мы здесь не для этого.
@CatParky это было адресовано человеку, ответившему на вопрос.
Как уже упоминал @eryksun, порядок важен и заслуживает упоминания. Start также обычно ожидал, что первая строка в двойных кавычках будет заголовком окна. Также было бы неплохо, если бы вы упомянули, помог ли кто-то еще в комментарии дать вам предоставленный ответ. Простое изменение кода в вашем ответе не делает ответ действительным для принятия. Мы здесь, чтобы помогать людям, а не публиковать то, что можем как можно быстрее, просто для того, чтобы завоевать репутацию.
for %%i in (*.py) do start "" /b python "%%i"