batch-file
Diferencias entre Batch (Windows) y Terminal (Linux)
Buscar..
Introducción
Batch y Bash son bastante diferentes. Los indicadores de lote se indican con una
/
, mientras que los indicadores de bash usan un -
. La capitalización es importante en bash, pero (casi) no en lote. Los nombres de variables por lotes pueden contener espacios, los nombres de variables bash no pueden. En última instancia, ambas son formas de manipular e interactuar con la línea de comandos. No es sorprendente que exista una superposición de tamaño razonable entre las capacidades de los dos sistemas.
Observaciones
-
bitsadmin
está en desuso en favor de los BITS del cmdlet de PowerShell pero aún funciona a partir de Windows 10 versión 1607 -
certutil
separa los pares de dígitos hexadecimales con un espacio, por lo quemd5sum
devolverá un valor de ejemplo ded41d8cd98f00b204e9800998ecf8427e
, mientras quecertutil
muestra el mismo valor qued4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
- Para
cd
en otro disco (por ejemplo, de C: a D :) se debe usar el indicador/d
-
del
no puede borrar carpetas, userm
lugar -
grep
es mucho más poderoso quefind
yfindstr
, es casi no es justo para compararlos;find
no tiene capacidades defindstr
regulares yfindstr
tiene capacidades defindstr
extremadamente limitadas ([az]{2}
no es una sintaxis válida, pero[az][az]
es) -
for
bucles en el símbolo del sistema de Windows solo se pueden usar nombres de variables de un solo carácter; Esta es la única vez que los nombres de las variables por lotes distinguen entre mayúsculas y minúsculas -
for
bucles en el símbolo del sistema también use la variable forma%A
lugar de%A%
;for
bucles en lotes, use la variable forma%%A
-
md
crea automáticamente los directorios principales necesarios, mientras quemkdir
necesita la-p
para hacerlo -
rem
no puede usarse como un carácter de comentario en línea a menos que esté precedido por un&
-
::
no se puede usar como un comentario en línea en absoluto, y tampoco se debe usar dentro de un bloque de código (conjunto de paréntesis)
- Tenga en cuenta que algunos comandos de Windows como
ping
todavía se usan-
como indicadores
Comandos de lotes y sus equivalentes de Bash
Lote | Golpetazo | Descripción |
---|---|---|
command /? | man command | Muestra la ayuda para el comando. |
bitsadmin | wget o curl | Descarga un archivo remoto |
certutil -hashfile file_name MD5 | md5sum file_name | Obtiene la suma de comprobación MD5 de file_name |
cd | pwd | Muestra el directorio actual |
cd directory | cd directory | Cambia el directorio actual al especificado. |
cls | clear | Borra la pantalla |
copy | cp | Copia un archivo o archivos de una ruta de origen a una ruta de destino |
date | date | Muestra la fecha o la establece según la entrada del usuario. |
del | rm | Borra un archivo o archivos |
dir | ls | Muestra una lista de archivos y directorios en el directorio actual. |
echo | echo | Muestra texto en la pantalla. |
exit | return | Sale de un script o subrutina. |
exit | logout | Cierra la línea de comandos o el terminal. |
fc | diff | Compara el contenido de dos archivos. |
find "string" file_name | grep "string" file_name | Busca nombre_archivo para la cadena |
findstr "string" file_name | grep "string" file_name | Busca nombre_archivo para la cadena |
for /F %A in (fileset*) do something | for item in fileset*; do; something; done | Hacer algo por cada archivo en un conjunto de archivos. |
for /F %A in ('command') do something | `command` | Devuelve la salida de un comando. |
for /L %A in (first,increment,last) do something | for item in `seq first increment last`; do; something; done | Comienza al principio y cuenta por incremento hasta que llega al último. |
forfiles | find | Busca archivos que coincidan con ciertos criterios |
if "%variable%"=="value" ( | if [ "variable"="value" ]; then | Compara dos valores |
ipconfig | ifconfig | Muestra información de IP |
md | mkdir | Crea nuevas carpetas |
mklink | ln -s | Crea un enlace simbólico. |
more | more | Muestra una pantalla de salida a la vez. |
move | mv | Mueve un archivo o archivos de una ruta de origen a una ruta de destino |
pause | read -p "Press any key to continue" | Pausa la ejecución del script hasta que el usuario presiona un botón |
popd | popd | Elimina la entrada superior de la pila de directorios y va al nuevo directorio superior |
pushd | pushd | Agrega el directorio actual a la pila de directorios y va al nuevo directorio superior |
ren | mv | Renombra archivos |
rem o :: | # | Comentarios una línea de código |
rd | rmdir | Elimina directorios vacíos |
rd /s | rm -rf | Elimina directorios independientemente de si estaban vacíos o no |
set variable=value | variable=value | Establece el valor de la variable en valor. |
set /a variable=equation | variable=$((equation)) | Realiza operaciones matemáticas (el lote solo puede usar números enteros de 32 bits) |
set /p variable=promptstring | read -p "promptstring" variable | Obtiene la entrada del usuario y la almacena en variable |
shift | shift | Desplaza los argumentos por 1 (o n si se proporciona) |
sort | sort | Ordena la salida alfabéticamente por línea |
tasklist | ps | Muestra una lista de procesos en ejecución. |
taskkill /PID processid | kill processid | Mata el proceso con PID processid |
time /t | date | Muestra la hora actual |
type | cat | Muestra el contenido de un archivo. |
where | which | Busca el directorio actual y el PATH para un archivo o comando |
whoami | id | Muestra el nombre y el grupo del usuario actual. |
Variables de lote y su equivalente de golpe
Lote | Golpetazo | Descripción |
---|---|---|
%variable% | $variable | Una variable regular |
!variable! | $variable | Una variable dentro de un bloque de código cuando setlocal enabledelayedexpansion está setlocal enabledelayedexpansion |
%errorlevel% o ERRORLEVEL | $? | Devuelve el estado del comando anterior: 0 si tiene éxito, 1 (o algo más) si no |
%1 , %2 , %3 , etc. | $1 , $2 , $3 , etc. | Los parámetros dados a un guión. |
%* | $* | Todos los parámetros dados a un script |
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow