Как свести к минимуму командную строку из моего файла bat
У меня есть этот файл bat, и я хочу свернуть окно cmd, когда я его запустил:
@echo off
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb
В основном я хочу, чтобы окно командной строки было сведено к минимуму немедленно. Любые идеи о том, как это сделать?
Ответы
Ответ 1
Существует довольно интересный способ выполнить script сведенный к минимуму, заставив его перезапустить сам свернутый. Вот код, который нужно ввести в начало вашего script:
if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit
Как это работает
Когда выполняется script IS_MINIMIZED
не определено (if not DEFINED IS_MINIMIZED
), поэтому:
Для исходной копии переменной script IS_MINIMIZED
устанавливается исходная script, поэтому она просто пропускает выполнение первой строки и переходит непосредственно к логике script.
Примечания
- Вам нужно зарезервировать некоторое имя переменной, чтобы использовать его как флаг.
- script должен быть завершен с помощью
exit
, иначе окно cmd не будет закрыто после выполнения script.
-
Если ваш script не принимает аргументы, вы можете использовать аргумент как флаг вместо переменной:
if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit
или короче
if "%1" == "" start "" /min "%~f0" MY_FLAG && exit
Ответ 2
Используйте команду start
, а переключатель /min
запускается с минимальным значением. Например:
start /min C:\Ruby192\bin\setrbvars.bat
Поскольку вы указали пакетный файл в качестве аргумента, запускается командный процессор, передавая переключатель /k
. Это означает, что после завершения команды окно останется на экране. Вы можете изменить это поведение, явно выполнив cmd.exe
самостоятельно и, при необходимости, передав соответствующие переключатели.
В качестве альтернативы вы можете создать ярлык для командного файла (все еще есть файлы PIF), а затем изменить его свойства, чтобы он сведен к минимуму.
Ответ 3
Единственный способ, который я знаю, - создать ярлык Windows для командного файла, а затем изменить его свойства для запуска по умолчанию.
Ответ 4
Если вы хотите запустить пакет для Win-Run/autostart, я нашел здесь приятное решение https://www.computerhope.com/issues/ch000932.htm и https://superuser.com/questions/364799/how-to-run-the-command-prompt-minimized
cmd.exe /c start /min myfile.bat ^& exit
- требуется
cmd.exe
, так как start не является командой Windows, которая может выполняться вне пакета
-
/c
= выход после завершения запуска
- часть
^& exit
гарантирует, что окно закрывается, даже если пакет не заканчивается на exit
Однако исходный cmd все еще не минимизирован.
Ответ 5
Используя PowerShell, вы можете свернуть тот же файл, не открывая новый экземпляр.
powershell -window minimized -command ""
Также -window hidden
и -window normal
можно полностью скрыть или восстановить.
источник: fooobar.com/questions/2420537/...
Ответ 6
Еще один бесплатный сторонний инструмент, способный минимизировать окно консоли в любое время (не только при запуске script), это Tcl с расширением TWAPI:
echo package require twapi;twapi::minimize_window [twapi::get_console_window] | tclkitsh -
здесь tclkitsh.exe
находится в PATH и является одним из файлов tclkit-cli-*-twapi-*.exe
, загружаемых из sourceforge.net/projects/twapi/files/Tcl двоичные файлы /Tclkits с TWAPI/. Я предпочитаю его гораздо легче min.exe
, упомянутого в ответе Бернарда Чена, потому что я использую TWAPI для бесчисленных других целей уже.
Ответ 7
Я не знаю, есть ли способ свести к минимуму окно из командной строки после открытия, но в следующей статье предлагается развернуть ваш фактический процесс как дочерний элемент в новом, предварительно сведенном к минимуму окне.
http://www.pcreview.co.uk/forums/command-prompt-tool-minimize-command-window-after-starts-t2037434.html
Ответ 8
Вы можете попробовать запустить script следующим образом
var WindowStyle_Hidden = 0
var objShell = WScript.CreateObject("WScript.Shell")
var result = objShell.Run("cmd.exe /c setrbvars.bat", WindowStyle_Hidden)
сохраните файл как filename.js
Ответ 9
Если вы введете этот текст в свой файл bat:
start /min blah.exe
Он сразу же свернется, как только откроет программу. Вы увидите только кратковременную вспышку, и она исчезнет.
Ответ 10
Один из вариантов - найти одну из различных утилит, которые могут изменить состояние окна запущенного в данный момент окна консоли и выполнить вызов из него из пакетного сценария.
Вы можете запустить его как первое, что есть в вашем пакетном скрипте. Вот два таких инструмента:
min.exe
http://www.paulsadowski.com/wsh/cmdprogs.htm
cmdowhttp://www.commandline.co.uk/cmdow/index.html
Ответ 11
Вы можете минимизировать командную строку во время прогона, но вам понадобятся два дополнительных скрипта: windowMode и getCmdPid.bat:
@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode minimized
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb
Ответ 12
Другим вариантом, который отлично подходит для меня, является использование ConEmu, см. http://conemu.github.io/en/ConEmuArgs.html
"C:\Program Files\ConEmu\ConEmu64.exe" -min -run myfile.bat
Ответ 13
Одна из вещей, которые я ищу, - это запуск командного окна в минимизированном состоянии "все время" на конкретном сервере. Приведенные выше решения не будут работать для меня, поскольку исполняемая командная строка является частью другого приложения, которое будет запускать команду (поэтому все команды находятся в другом "родительском" приложении, в центральной базе данных).
Я знаю, что мог бы создать пакетный файл для каждого из действий, сохранить пакетный файл на сервере и вызвать пакетный файл вместо "сложной" команды, но мне не пришлось бы делать это на нескольких серверах, которые наш приложение использует...
Итак, допустим, команда выглядит примерно так:
"C:\applicationFolder\some_executabe.exe" -parameter1 config.file VAR1=$FIELD1 VAR2=$FIELDS2
Есть ли что-нибудь, что я мог бы добавить к этой команде? или иначе, моя цель состояла бы в том, чтобы любая командная строка работала в минимизированном состоянии "командных окон" по умолчанию для этого сервера.
В старые времена, да, у нас были PIF файлы, чтобы настроить его для конкретного пакетного файла, но я смотрел по умолчанию в командной строке и не мог видеть никакого контроля над состоянием окна (я могу контролировать только размер окна, цвет так далее)
любые советы по этому вопросу будут оценены
С наилучшими пожеланиями, HO
Ответ 14
Один из способов "минимизировать" окно cmd - уменьшить размер консоли, используя что-то вроде...
echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2
Вы можете уменьшить COLS до 18, а LINES до 1, если хотите.
Преимущество заключается в том, что он работает под WinPE, 32-разрядным или 64-разрядным и не требует каких-либо сторонних утилит.