Я делаю операцию, которая откроет 100 окон DOS в последовательности (одно за другим закончено).
Каждое окно займет приблизительно 2 часа, чтобы завершить процесс, затем начнется следующее окно и так далее.
Я хотел бы закрыть каждый сразу после его начала. Есть ли способ, которым я могу автоматизировать процесс закрытия окна DOS?
ОБНОВЛЕНИЕ: я запускаю программное обеспечение, которое открывает окно DOS для выполнения операции, после открытия окна DOS программа записывает командный файл. Это произойдет около 100 раз, потому что я настроил программное обеспечение для выполнения 100 различных операций. Я собираюсь использовать все 100 командных файлов позже. Мне нужно автоматизировать закрытие окон DOS. Мне на самом деле не нужны эти окна, я только забочусь о записи командных файлов. Надеюсь, что это проясняет проблему.
Ответы:
Если вы используете
GOTO EOF
в конце своих скриптов, которые выполняются, вы можете просто заменить их наEXIT /B
вместо этого, и это должно работать для ваших нужд.Пример скрипта
источник
EXIT /B
в конце сценария в основном. Я не уверен, как выглядит ваша логика для каждого выполняемого пакетного сценария. Похоже, у вас есть какой-то процесс, который создает пакетные сценарии, но если вы можете быть уверены, что последняя операция, которая должна быть запущенаEXIT /B
, должна работать. Протестируйте с небольшим или простым набором командных файлов и подтвердите.START
там, а неCMD /C
иCALL
что Прежде чемSTART
объяснить другим, почему я предложил этотEXIT /B
подход, я предложил, так как другие методы, которые я по какой-то причине предложил, не работали, как ожидалось, в вашей системе по какой-либо причине. Дайте мне знать, как все происходит, и я надеюсь, что вы найдете решение.START "" CMD /C "c:\folder\whatever.bat"
пакетный файл работает, то я не предлагал пытаться поместить егоCMD /C
как частьSTART
команды, так что это хорошее предложение, которое было обязательно сделано в другом ответе !!Существует несколько возможных подходов, включая альтернативные решения.
Будут ли открыты другие окна «командной строки», которые вас интересуют? Если нет, откройте новую командную строку и убейте все окна командной строки:
TASKKILL /fi "imagename eq cmd.exe"
В качестве альтернативы, почему создано 100 окон? Как отмечается в комментарии Винаяка, это может и не понадобиться. Попробуйте создать один пакетный файл, который использует команду CALL несколько раз. например:
@Echo Off Call File1.bat Call File2.bat Call File3.bat
Если вы пытаетесь запустить все это одновременно, а не последовательно, команда запуска может быть полезна. Рассмотреть возможность:
@Echo Off Start CMD /C File1.bat Start CMD /C File2.bat
Примечания: * Возможно, особенно при использовании команды START, лучше всего, если вы осторожны с PATH. Поэтому не просто запускайте «File1.bat», если «File1.bat» отсутствует в вашей переменной PATH или в текущем каталоге. Когда бы я ни создавал новое окно, я привык не доверять тому, что я начинаю в текущем каталоге, как мне кажется. Это может включать использование
CD
команды чаще (возможно, даже чаще, чем необходимо, просто для безопасности). Или многие команды могут быть запущены из других каталогов, если вы укажете полный путь. например:@Echo Off Start CMD /C %USERPROFILE%\mybats\File1.bat Start CMD /C %USERPROFILE%\mybats\File2.bat
Если в именах каталогов / папок есть символ «пробел», вам может потребоваться заключить в кавычки весь путь.
@Echo Off Echo My home directory is %USERPROFILE% Pause Start "" CMD /C "%USERPROFILE%\mybats\File1.bat" Start "" CMD /C "%USERPROFILE%\mybats\File2.bat"
Удачи.
источник