2011-01-14 18:23:22 +0000 2011-01-14 18:23:22 +0000
59
59

Как создать файл Windows Batch, который не будет показывать командную строку при выполнении?

Я установил рубиновый драгоценный камень под названием Redcar, который запускается из командной строки. Когда он запускается, он крадет оболочку, пока не закончится, поэтому мне нужно создать новое окно оболочки, чтобы продолжить работу из командной строки. Я использую оболочку GITBash от MySysGit.

Я нашел файл Redcar.bat, который предназначен для запуска Redcar в качестве ярлыка, я полагаю, но я не хочу, чтобы дополнительное окно командной строки открывалось всякий раз, когда я запускаю BAT файл.

Как я могу просто запустить BAT, не увидев приглашение на запуск?

Ответы (11)

38
38
38
2011-01-21 18:41:45 +0000

Вы не можете – выполнение пакетного файла со встроенной командной строкой будет держать окно открытым до тех пор, пока пакетный файл не выйдет.

Что вы can делаете, так это делаете шаги для того, чтобы убедиться, что пакетный файл выходит как можно быстрее. Если это возможно, модифицируйте пакетный файл, чтобы запустить любую программу с командой start. По умолчанию start возвращается немедленно, не дожидаясь выхода программы, поэтому пакетный файл будет продолжать выполняться и, предположительно, немедленно выйдет. Параллельно с изменением ярлыка для запуска пакетного файла минимизируется, и вы увидите только вспышку панели задач, даже не увидев окна на экране.

Одно из предостережений состоит в том, что если вы запускаете консольную программу, которой является много скриптовых интерпретаторов, пакетный файл будет ждать выхода программы, а использование start вызовет новое консольное окно. Что вам нужно сделать в этом случае, так это запустить Windows-based версию интерпретатора вместо консольной – нет необходимости использовать start. Для Perl, вы бы запустили wperl.exe вместо perl.exe. Для Python, это pythonw.exe вместо python.exe. В старом дистрибутиве win32 Ruby, который я скачал, есть rubyw.exe, которая должна сделать то же самое.

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

22
22
22
2014-01-15 06:25:25 +0000

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

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing

Скопируйте строки выше в редактор и сохраните файл с расширением .VBS. Отредактируйте имя файла .BAT и путь к нему соответственно. Затем просто запустите .vbs-файл и волшебство произойдет!

8
8
8
2013-01-02 05:37:05 +0000

Вы можете запустить другой пакетный файл с файлом START /MIN CMD.EXE /C mybatchfile.bat из командной строки.

Снаружи он принесет окно консоли cmd, но, чтобы избежать этого, вы можете создать ярлык файла с свойствами, измененными на start minimized.

5
5
5
2016-09-11 08:06:00 +0000

Для этого используйте программу Bat To Exe Converter , чтобы преобразовать ваш пакетный файл в исполняемый.

При преобразовании в исполняемый файл вы найдете возможность запустить ваш файл как Невидимое приложение в разделе видимости. Таким образом, когда вы запустите его, он будет работать без окна.

4
4
4
2012-12-18 07:07:00 +0000

Продолжая ответ Денниса Вильямсона, вы можете отредактировать пакетный файл и добавить (prepend) START /B к выполняемой команде.

Например, у меня есть пакетный файл, который запускает шпаклевку и имеет такую же проблему (дополнительный CMD), так что вот как я его написал:

@ECHO OFF START /B putty.exe -load _name\_of\_my\_config\_file_

Он отлично работал.

4
4
4
2011-01-14 19:32:24 +0000

Попробуйте:

START /B batchfile

замечание добавлено barlop

старт /? говорит о /B

B Start application without creating a new window. The
             application has ^C handling ignored. Unless the application
             enables ^C processing, ^Break is the only way to interrupt
             the application.
3
3
3
2015-04-25 09:00:42 +0000

Вы можете использовать RunHiddenConsole

hideExec.bat

&00001

3
3
3
2011-01-21 18:20:43 +0000

Я не совсем понимаю, в чем ваша проблема, но с некоторыми из моих пакетных файлов, я использую “манекен”, единственной целью которого является запуск основного пакетного файла.

Так что GO.BAT будет иметь:

cmd /c go2.bat %1 %2 %3
exit

Выход закрывает окно командной строки, которое в противном случае оставалось бы открытым.

И GO2.BAT будет иметь собственно содержимое пакетного файла, которое я хочу.

@echo off
  set userid=

  if NOT [%1]==[] goto userid:
  set /p userid=Enter USERID:  
  goto set_usr:

 :userid
 set userid=%1
 shift

 :set_usr
 if %userid%==steven goto steven:
 ...
0
0
0
2013-03-04 00:36:09 +0000

Просто поставьте переключатель /b перед дорожкой. Он не откроет вторую командную строку.

0
0
0
2014-10-18 16:43:48 +0000

Пока что (https://superuser.com/a/701867/141909) - лучшее решение для меня. Файл VBS позволяет мне запускать функциональность пакета через скрипт, что в первую очередь предотвращает появление окна CMD. Однако есть несколько предостережений:

  1. Если ваш пакет требует прав администратора, создайте или используйте существующий пакет, который вызывает VBS и запустите его от имени администратора.

  2. При отсутствии видимости, может быть трудно определить, действительно ли то, что вы пытаетесь сделать, работает так, как вы хотите.

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

0
0
0
2016-05-20 07:11:31 +0000

Я использовал cmdow в прошлом, и кажется, что это сработало для того, что я хочу.

Вы, вероятно, захотите использовать одну из следующих опций:CMDOW [window] /HID

/HID скрывает указанное окно CMDOW [window] /END

/END закрывает указанное окно

CMDOW [window] /CLS /CLS вежливо просит окно закрыть (некоторые окна могут открывать диалоговое окно)

Надеюсь, это поможет.

Похожие вопросы

3
19
10
28
6