2012-11-06 13 views
100

Jak jest komenda START z opcją CZEKAJCALL w porównaniu z opcją START/WAIT

START /wait notepad.exe 
START /wait notepad.exe 

... jakikolwiek inny z użyciem polecenia CALL?

CALL notepad.exe 
CALL notepad.exe 

Czy istnieje sytuacja, w której można zachowywać się inaczej, że druga dependending co jest realizowane?

+1

Spójrz na https://technet.microsoft.com/en-us/library/bb491005.aspx jest o START i https: //technet.microsoft.com/en-us/library/bb490873.aspx dotyczy WEZWANIA –

Odpowiedz

117

Dla plików exe, przypuszczam, że różnice są prawie nieważne.
Ale aby uruchomić exe, nie potrzebujesz nawet ZADZWOŃ.

Uruchamiając kolejną partię to wielka różnica,
jak CALL rozpocznie się w tym samym oknie, a nazywa partia ma dostęp do tego samego kontekstu zmiennej.
Dzięki temu może również zmieniać zmienne wpływające na dzwoniącego.

START utworzy nowy plik cmd.exe dla wywoływanej partii i bez/b otworzy nowe okno.
Ponieważ jest to nowy kontekst, zmienne nie mogą być udostępniane.

Uzupełnienie:
Korzystanie CALL może zmienić parametry (dla partii i plików EXE), ale tylko wtedy, gdy zawierają one jest kursor lub procent znaki.

call myProg param1 param^^2 "param^3" %%path%% 

zostanie poszerzona do (od wewnątrz pliku wsadowego)

myProg param1 param2 param^^3 <content of path> 
+16

Podczas wykonywania pliku .bat przy użyciu START/WAIT należy podać START/WAIT cmd/c "file.bat", a nie tylko START/WAIT "file.bat", w przeciwnym razie okno cmd utworzone dla file.bat pozostanie otwarte – FrinkTheBrave

+3

Możesz znaleźć porównanie między CALL i START na: https://ss64.com/nt/start.html (zaktualizowane dzisiaj z sectio ns "Start/Wait" i "START vs CALL") –

10

myślę, że powinny one wykonywać zasadniczo takie same, ale są pewne różnice. START jest zwykle używany do uruchamiania aplikacji lub uruchamiania domyślnej aplikacji dla danego typu pliku. W ten sposób, jeśli jesteś START http://mywebsite.com, to nie robi START iexplore.exe http://mywebsite.com.

uruchamia Microsoft Word i otwiera plik myworddoc.docx. CALL myworddoc.docx robi to samo ... jednak START zapewnia więcej opcji dla stanu okna i rzeczy tego rodzaju. Umożliwia także ustawienie priorytetu i powinowactwa procesu.

Krótko mówiąc, biorąc pod uwagę dodatkowe opcje dostarczone przez start, powinno to być wybrane narzędzie.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] 
    [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] 
    [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B] 
    [command/program] [parameters] 

"title"  Title to display in window title bar. 
path  Starting directory. 
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. 
I   The new environment will be the original environment passed 
      to the cmd.exe and not the current environment. 
MIN   Start window minimized. 
MAX   Start window maximized. 
SEPARATE Start 16-bit Windows program in separate memory space. 
SHARED  Start 16-bit Windows program in shared memory space. 
LOW   Start application in the IDLE priority class. 
NORMAL  Start application in the NORMAL priority class. 
HIGH  Start application in the HIGH priority class. 
REALTIME Start application in the REALTIME priority class. 
ABOVENORMAL Start application in the ABOVENORMAL priority class. 
BELOWNORMAL Start application in the BELOWNORMAL priority class. 
NODE  Specifies the preferred Non-Uniform Memory Architecture (NUMA) 
      node as a decimal integer. 
AFFINITY Specifies the processor affinity mask as a hexadecimal number. 
      The process is restricted to running on these processors. 

      The affinity mask is interpreted differently when /AFFINITY and 
      /NODE are combined. Specify the affinity mask as if the NUMA 
      node's processor mask is right shifted to begin at bit zero. 
      The process is restricted to running on those processors in 
      common between the specified affinity mask and the NUMA node. 
      If no processors are in common, the process is restricted to 
      running on the specified NUMA node. 
WAIT  Start application and wait for it to terminate. 
3

połączeń

Wywołuje jeden program wsadowy z innego bez zatrzymywania nadrzędnego programu wsadowego. Polecenie call akceptuje etykiety jako cel połączenia. Połączenie nie działa w wierszu polecenia, gdy jest używane poza skryptem lub plikiem wsadowym. https://technet.microsoft.com/en-us/library/bb490873.aspx

start

Rozpoczyna oddzielne okno wiersza polecenia aby uruchomić program lub polecenie. Używane bez parametrów start otwiera drugie okno wiersza polecenia. https://technet.microsoft.com/en-us/library/bb491005.aspx

1

To co znalazłem podczas uruchamiania plików wsadowych (równolegle wiele instancji tego samego pliku bat w tym samym czasie z różnych parametrów wejściowych):

Powiedzmy, że masz plik exe, który wykonuje długie zadanie o nazwie LongRunningTask.exe

Jeśli wywołasz exe bezpośrednio z pliku bat, tylko pierwsze wywołanie LongRunningTask powiodło się, podczas gdy reszta otrzyma błąd systemu operacyjnego "Plik jest już w użyciu przez proces"

Jeśli używasz tego polecenia:

start/B/wait „” „” „LongRunningTask.exe Parametry”

będzie można uruchomić wiele instancji bat, exe, wciąż czeka na zadanie Zakończ zanim nietoperz będzie kontynuował wykonywanie pozostałych poleceń. Opcja/B polega na tym, aby uniknąć tworzenia kolejnego okna, puste cytaty są potrzebne, aby polecenie działało, patrz odnośnik poniżej.

Należy zauważyć, że jeśli nie używasz/WAIT na początku, LongRunningTask będzie wykonywany w tym samym czasie, co pozostałe polecenia w pliku wsadowym, więc może powodować problemy, jeśli jedno z tych poleceń wymaga wyjścia z LongRunningTask

wznawianie:

To can not run równolegle:

  • wezwanie LongRunningTask.exe

Będzie to działać równolegle i będzie ok o ile nie ma żadnych zależności między danych wyjściowych polecenia i pozostałej części pliku bat:

  • start/B „” „LongRunningTask.exe” " parametry "

to będzie działać równolegle i czekać na zadanie do końca, dzięki czemu można korzystać z wyjścia:

  • start/B/wait """ LongRunningTask.exe”, "parametry"

odniesienia dla polecenia start: How can I run a program from a batch file without leaving the console open after the program start?