54

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

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

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

13 ответов13

37

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

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

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

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

20

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

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

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

8

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

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

4

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

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

Bat, чтобы выйти

4

Попробуйте это:

START /B batchfile

примечание добавлено по барлопу

Начните /? говорит о /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

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

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

@ECHO OFF
START /B putty.exe -load name_of_my_config_file

Это сработало отлично.

3

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

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

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

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

И ГО2.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:
 ...
3

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

hideExec.bat

@echo off
RunHiddenConsole batch.bat
1

Если вы все еще заинтересованы в том, чтобы вообще не показывать окно консоли, вот решение от stackoverflow, которое сработало для меня (в моем случае я ничего не помещал в реестр, но там, где мне было нужно).

0

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

0

Ответ Indago был лучшим решением для меня до сих пор. Файл VBS позволяет мне запускать функции пакета через сценарий, предотвращая появление окна CMD. Есть несколько предостережений:

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

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

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

0

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

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

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

CMDOW [window] /END

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

CMDOW [window] /CLS

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

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

-5

Просто создайте ярлык для командного файла, щелкните его правой кнопкой мыши, выберите « Properties , перейдите на вкладку « General », установите флажок « Hidden , нажмите « Apply а затем - « OK .
Теперь, когда вы откроете ярлык, он запустит командный файл Hidden.

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