windows - Comando para ejecutar un archivo.bat
cmd command (4)
Estoy tratando de hacer que mi script de compilación de Visual Studio ejecute un archivo .bat que haga algo importante.
Esto es lo que quiero hacer ahora:
cd "F:/- Big Packets -/kitterengine/Common/" Template.bat
Pero no funciona.
Tengo que hacer esto para que funcione:
cd "F:/- Big Packets -/kitterengine/Common/"
F:
Template.bat
Pero esto es bastante difícil de agregar al script de Visual Studio.
¿Cómo puedo hacer esto en una sola línea?
Hay muchas posibilidades para resolver esta tarea.
1. EJECUTE el archivo por lotes con la ruta completa
La solución más fácil es ejecutar el archivo por lotes con la ruta completa.
"F:/- Big Packets -/kitterengine/Common/Template.bat"
Una vez que se alcanza el final del archivo por lotes
Template.bat
, no hay retorno al script anterior en caso de que la línea de comando anterior esté dentro de un archivo * .bat o * .cmd.
El directorio actual para el archivo por lotes
Template.bat
es el directorio actual del proceso actual.
En el caso de
Template.bat
requiere que el directorio de este archivo por lotes sea el directorio actual, el archivo por lotes
Template.bat
debe contener después de
@echo off
como segunda línea la siguiente línea de comando:
cd /D "%~dp0"
Ejecutar en una ventana de símbolo del sistema
cd /?
para mostrar la ayuda de este comando que explica el parámetro
/D
... cambie al directorio especificado también en una unidad diferente.
Ejecutar en una ventana de símbolo del sistema
call /?
para que se muestre la ayuda de este comando utilizado también en la solución 2., 4. y 5. y explicando también
%~dp0
... unidad y ruta del argumento 0, que es el nombre del archivo por lotes.
2. LLAME al archivo por lotes con la ruta completa
Otra solución es llamar al archivo por lotes con la ruta completa.
call "F:/- Big Packets -/kitterengine/Common/Template.bat"
La diferencia con la primera solución es que, una vez alcanzado el archivo por lotes
Template.bat
el procesamiento por lotes continúa en un script por lotes que contiene esta línea de comando.
Para el directorio actual lea más arriba.
3. Cambie el directorio y ejecute el archivo por lotes con una línea de comando
Hay 3 operadores para ejecutar múltiples comandos en una línea de comando:
&
,
&&
y
||
.
Para obtener más información, consulte la respuesta en una
sola línea con múltiples comandos utilizando el archivo por lotes de Windows
Sugiero para esta tarea el operador
&&
.
cd /D "F:/- Big Packets -/kitterengine/Common" && Template.bat
Como en la primera solución, no hay retorno al script actual si este es un archivo * .bat o * .cmd y el cambio del directorio y la continuación del procesamiento por lotes en
Template.bat
es exitoso.
4. Cambie el directorio y llame al archivo por lotes con una línea de comando
Esta línea de comando cambia el directorio y, en caso de éxito, llama al archivo por lotes.
cd /D "F:/- Big Packets -/kitterengine/Common" && call Template.bat
La diferencia con la tercera solución es el retorno al script por lotes actual al salir del procesamiento de
Template.bat
.
5. Cambie el directorio y el archivo por lotes CALL manteniendo el entorno actual con una línea de comando
Las cuatro soluciones anteriores cambian el directorio actual y se desconoce qué hace
Template.bat
respecto a
- directorio actual
- Variables de entorno
- estado de extensiones de comando
- estado de expansión demorada
En caso de que sea importante mantener el entorno del script * .bat o * .cmd actual sin modificaciones por cualquier cambio de
Template.bat
en el entorno, es aconsejable usar
setlocal
y
endlocal
.
Ejecutar en una ventana de símbolo del sistema
setlocal /?
y
endlocal /?
para mostrar la ayuda de estos dos comandos.
Y lea la respuesta en el
comando de cambio de directorio cd ... no funciona en el archivo por lotes después de la instalación de npm
explicando más detalladamente lo que hacen estos dos comandos.
setlocal & cd /D "F:/- Big Packets -/kitterengine/Common" & call Template.bat & endlocal
Ahora solo se usa
&
lugar de
&&
ya que es importante aquí que después de ejecutar
setlocal
el comando
endlocal
finalmente también se ejecute.
UNA NOTA MÁS
Si el archivo por lotes
Template.bat
contiene la
exit
del comando sin parámetro
/B
y este comando realmente se ejecuta, el proceso del comando siempre se cierra independientemente de la jerarquía de llamada.
Así que asegúrese de que
Template.bat
contenga
exit /B
o
goto :EOF
lugar de simplemente
exit
si hay una
exit
utilizada en este archivo por lotes.
Puede consultar aquí: https://ss64.com/nt/start.html
start "" /D F:/- Big Packets -/kitterengine/Common/ /W Template.bat
Puede usar el comando Cmd para ejecutar un archivo por lotes.
Aquí está mi camino =>
cmd /c ""Full_Path_Of_Batch_Here.cmd" "
Más información =>
cmd /?
"F:/- Big Packets -/kitterengine/Common/Template.bat"
puede ser precedido por
call
(ver
call /?
).
O
Cd /d "F:/- Big Packets -/kitterengine/Common/" & Template.bat
.
CMD Cheat Sheet
-
Cmd.exe
-
Obteniendo ayuda
-
Puntuación
-
Nombrar archivos
-
Programas de inicio
-
Llaves
CMD.exe
Lo primero que debe recordar es una forma de operar una computadora. Es la forma en que lo hicimos antes de que WIMP (Windows, iconos, mouse, menús emergentes) se volviera común. Debe sus raíces a CPM, VMS y Unix. Se utilizó para iniciar programas y copiar y eliminar archivos. También puede cambiar la hora y la fecha.
Para obtener ayuda sobre cómo iniciar CMD, escriba
cmd /?
.
Debe iniciarlo con el
/k
o
/c
menos que solo desee escribirlo.
Obteniendo ayuda
Para ayuda general.
Escriba
Help
en el símbolo del sistema.
Para cada comando enumerado, escriba
help <command>
(por ejemplo,
help dir
) o
<command> /?
(por ejemplo,
dir /?
).
Algunos comandos tienen subcomandos.
Por ejemplo
schtasks /create /?
.
La ayuda del comando
NET
es inusual.
Escribiendo
net use /?
Es una breve ayuda.
Escriba
net help use
para obtener ayuda completa.
Lo mismo se aplica en la raíz -
net /?
También es una ayuda breve, use
net help
.
Las referencias en la Ayuda al nuevo comportamiento describen cambios de CMD en OS / 2 y Windows NT4 a la CMD actual que está en Windows 2000 y versiones posteriores.
WMIC
es un comando multipropósito.
Escriba
wmic /?
.
Puntuación
& seperates commands on a line.
&& executes this command only if previous command''s errorlevel is 0.
|| (not used above) executes this command only if previous command''s
errorlevel is NOT 0
> output to a file
>> append output to a file
< input from a file
2> Redirects command error output to the file specified. (0 is StdInput, 1 is StdOutput, and 2 is StdError)
2>&1 Redirects command error output to the same location as command output.
| output of one command into the input of another command
^ escapes any of the above, including itself, if needed to be passed
to a program
" parameters with spaces must be enclosed in quotes
+ used with copy to concatenate files. E.G. copy file1+file2 newfile
, used with copy to indicate missing parameters. This updates the files
modified date. E.G. copy /b file1,,
%variablename% a inbuilt or user set environmental variable
!variablename! a user set environmental variable expanded at execution
time, turned with SelLocal EnableDelayedExpansion command
%<number> (%1) the nth command line parameter passed to a batch file. %0
is the batchfile''s name.
%* (%*) the entire command line.
%CMDCMDLINE% - expands to the original command line that invoked the
Command Processor (from set /?).
%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop.
Single % sign at command prompt and double % sign in a batch file.
// (//servername/sharename/folder/file.ext) access files and folders via UNC naming.
: (win.ini:streamname) accesses an alternative steam. Also separates drive from rest of path.
. (win.ini) the LAST dot in a file path separates the name from extension
. (dir ./*.txt) the current directory
.. (cd ..) the parent directory
//?/ (//?/c:/windows/win.ini) When a file path is prefixed with //?/ filename checks are turned off.
Nombrar archivos
< > : " / / | Reserved characters. May not be used in filenames.
Reserved names. These refer to devices eg,
copy filename con
which copies a file to the console window.
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4,
COM5, COM6, COM7, COM8, COM9, LPT1, LPT2,
LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9
CONIN$, CONOUT$, CONERR$
--------------------------------
Maximum path length 260 characters
Maximum path length (//?/) 32,767 characters (approx - some rare characters use 2 characters of storage)
Maximum filename length 255 characters
Comenzando un programa
Ver
start /?
y
call /?
para ayuda en las tres formas.
Hay dos tipos de programas de Windows: consola o no consola (a estos se les llama GUI, incluso si no tienen uno). Los programas de consola se conectan a la consola actual o Windows crea una nueva consola. Los programas GUI tienen que crear explícitamente sus propias ventanas.
Si no se proporciona una ruta completa, Windows busca
-
El directorio desde el que se cargó la aplicación.
-
El directorio actual para el proceso padre.
-
Windows NT / 2000 / XP: el directorio del sistema de Windows de 32 bits. Use la función GetSystemDirectory para obtener la ruta de este directorio. El nombre de este directorio es System32.
-
Windows NT / 2000 / XP: el directorio de sistema de Windows de 16 bits. No hay ninguna función que obtenga la ruta de este directorio, pero se busca. El nombre de este directorio es Sistema.
-
El directorio de Windows. Use la función GetWindowsDirectory para obtener la ruta de este directorio.
-
Los directorios que se enumeran en la variable de entorno PATH.
Especifique un nombre de programa
Esta es la forma estándar de iniciar un programa.
c:/windows/notepad.exe
En un archivo por lotes, el lote esperará a que el programa salga. Cuando se escribe, el símbolo del sistema no espera a que salgan los programas gráficos.
Si el programa es un archivo por lotes, el control se transfiere y el resto del archivo por lotes que realiza la llamada no se ejecuta.
Usar el comando de inicio
Start
inicia programas de formas no estándar.
start "" c:/windows/notepad.exe
Start
inicia un programa y no espera.
Los programas de consola comienzan en una nueva ventana.
El uso del modificador
/b
fuerza los programas de consola en la misma ventana, lo que niega el objetivo principal de Inicio.
Inicio utiliza el shell gráfico de Windows, lo mismo que escribir en WinKey + R (cuadro de diálogo Ejecutar). Tratar
start shell:cache
También los nombres de programas registrados en
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths
también se pueden escribir sin especificar una ruta completa.
También tenga en cuenta que el primer conjunto de citas, si corresponde, DEBE ser el título de la ventana.
Usar comando de llamada
La llamada se usa para iniciar archivos por lotes y esperar a que salgan y continúen el archivo por lotes actual.
Otros nombres de archivo
Escribir un nombre de archivo que no sea de programa es lo mismo que hacer doble clic en el archivo.
Llaves
Ctrl + C sale de un programa sin salir de la ventana de la consola.
Para otras teclas de edición, escriba
Doskey /?
.
-
↑ y ↓ comandos de recuperación
-
ESC borra la línea de comando
-
F7 muestra el historial de comandos
-
ALT + F7 borra el historial de comandos
-
F8 busca el historial de comandos
-
F9 selecciona un comando por número
-
ALT + F10 borra las definiciones de macro
Tampoco listado
-
Ctrl + ← o → Mueve una palabra a la vez
-
Ctrl + Retroceso Elimina la palabra anterior
-
Inicio Comienzo de línea
-
Fin Fin de línea
-
Ctrl + Fin Elimina al final de la línea