windows - program - start max bat



Comando CALL vs. START com opção/WAIT (4)

Como é o comando START com uma opção WAIT?

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

... diferente de usar um comando CALL?

CALL notepad.exe 
CALL notepad.exe 

Existe uma situação em que alguém pode se comportar diferentemente do outro dependendo do que está sendo executado?


Answer #1

Eu acho que eles devem executar geralmente o mesmo, mas existem algumas diferenças. START é geralmente usado para iniciar aplicativos ou para iniciar o aplicativo padrão para um determinado tipo de arquivo. Dessa forma, se você START http://mywebsite.com não faz START iexplore.exe http://mywebsite.com .

START myworddoc.docx iniciaria o Microsoft Word e abriria myworddoc.docx. CALL myworddoc.docx faz a mesma coisa ... no entanto, o START fornece mais opções para o estado da janela e coisas dessa natureza. Ele também permite que a prioridade e a afinidade do processo sejam definidas.

Em suma, dadas as opções adicionais fornecidas pelo início, essa deve ser sua ferramenta de escolha.

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.

Answer #2

Há uma diferença útil entre call e start /wait ao chamar regsvr32.exe /s por exemplo, também referenciado por Gary em sua resposta a how-do-i-get-the-application-exit-code-from-a-windows-command-line

call regsvr32.exe /s broken.dll
echo %errorlevel%

sempre retornará 0, mas

start /wait regsvr32.exe /s broken.dll
echo %errorlevel%

irá devolver o nível de erro de regsvr32.exe


Answer #3

Para arquivos exe, suponho que as diferenças são quase sem importância.
Mas para começar um exe você nem precisa de CALL.

Ao iniciar outro lote, é uma grande diferença
como CALL irá iniciá-lo na mesma janela e o lote chamado tem acesso ao mesmo contexto variável.
Por isso, também pode alterar as variáveis ​​que afetam o chamador.

START irá criar um novo cmd.exe para o lote chamado e sem / b abrirá uma nova janela.
Como é um novo contexto, as variáveis ​​não podem ser compartilhadas.

Termo aditivo:
O uso de CALL pode alterar os parâmetros (para arquivos batch e exe), mas somente quando eles contêm sinais de carets ou porcentagem.

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

Será expandido para (de dentro de um arquivo de lote)

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

Answer #4

Ligar

Chama um programa em lotes de outro sem parar o programa em lote pai. O comando de chamada aceita rótulos como o destino da chamada. A chamada não tem efeito na linha de comando quando usada fora de um script ou arquivo em lotes. technet.microsoft.com/en-us/library/bb490873.aspx

Começar

Inicia uma janela do Prompt de Comando separada para executar um programa ou comando especificado. Usado sem parâmetros, o início abre uma segunda janela do prompt de comando. technet.microsoft.com/en-us/library/bb491005.aspx





batch-file