sintaxis y práctica del script bat

1. ¿Qué es la escritura bat?

        Un script bat es una colección de comandos de DOS dispuestos en un orden determinado y se ejecuta en el entorno de línea de comandos de Windows. Al estudiar este artículo, básicamente podrás implementar algunos scripts simples.

2. ¿Por qué aprender bat script?

        El uso de bat puede mejorar la eficiencia de la oficina. Puede usar directamente el editor Notepad++ para escribir código. Puede hacer doble clic directamente para realizar el proceso de script que escribió, como comparar datos entre dos tablas de Excel, ejecutar ciertos comandos tediosos y enviarlos a un archivo especificado, etc. Etc., puede ahorrar mucho tiempo mediante el script bat y no necesita realizar manualmente operaciones mecánicas del sistema.

3. Preparación básica del entorno

1. sistema Windows

2. Editor de texto Bloc de notas++

3. Cree un archivo txt y cambie el sufijo a .bat

4. Si desea ejecutar un archivo Python, debe preparar un entorno Python.

4. Resuelve caracteres chinos confusos

El script de procesamiento por lotes de bat es el siguiente

@echo apagado
eco Hola mundo    
pausa

Al ejecutar el script, aparecen caracteres chinos confusos.

 

1. Análisis de código confuso

  1. Los caracteres confusos están relacionados con la codificación de caracteres.
  2. Las computadoras solo pueden procesar números y, si encuentran texto, deben convertirlos en números antes de procesarlos, de ahí la aparición de la codificación de caracteres (conjunto de caracteres). Si se utiliza una determinada codificación de caracteres para la codificación, se debe utilizar la misma codificación de caracteres para la decodificación. Si se utilizan diferentes codificaciones de caracteres, aparecerán caracteres confusos.

2. Resolver códigos confusos

1. Declare el cambio de página de códigos en el archivo de script bat original, chcp 65001

 El resultado es el siguiente:

2. Edite usando codificación ANSI en el editor.

El resultado es el siguiente:

5. Gramática básica

1. comando de eco

echo on El comando por lotes muestra su propia línea de comando cuando se ejecuta
echo off El comando por lotes no muestra su propia línea de comando cuando se ejecuta
@echo off El carácter @ colocado antes del comando desactivará el eco del comando, independientemente de si echo es encendido en este momento.
echo. Genera una línea en blanco, "." se puede reemplazar por cualquier símbolo como:;"/[\]+ etc.

echo Hola Mundo Imprimir Hola Mundo
prueba de eco > archivo.txt Crea un archivo archivo.txt que contiene la prueba de caracteres

echo %TIME% genera la hora actual

2.  comando de pausa

pausa espera y solicita "Presione cualquier tecla para continuar..."
pausa > nul espera pero no aparece el mensaje
echo "ingrese cualquier tecla para salir" y pausa > nul genera la salida especificada "ingrese cualquier tecla para salir" y espera la operación

Caso básico: salida Hola mundo y hora actual

@eco apagado

eco Hola mundo

eco %TIEMPO%

pausa 

3. establecer comando

SET [variable=[cadena]] #variable representa el nombre de la variable y la cadena representa el valor de la variable.

Por ejemplo:
@echo off
set str="Hola querida"
echo %str%
pausa

Salida:
"Hola querida"

4.  comando de salida

EXIT [/B] [código de salida]
descripción del parámetro:
/B: especifica salir del script por lotes actual en lugar de CMD.EXE. Si se ejecuta desde fuera de un script por lotes, CMD.EXE saldrá.
Código de salida de CMD.EXE: especifique un número numérico. Si se especifica /B, establece ERRORLEVEL en ese número. Si sale de CMD.EXE, configure el código de salida del proceso con ese número

5. Variables del sistema de uso común

%CD% Obtiene el directorio actual
%PATH% Obtiene la ruta de búsqueda del comando
%DATE% Obtiene la fecha actual.
%TIME% obtiene la hora actual.
%RANDOM% obtiene cualquier número decimal entre 0 y 32767.
%ERRORLEVEL% Obtiene el código de resultado de la ejecución del comando anterior

6. Operaciones básicas con cadenas

Intercepción de cadenas: utilice el comando  echo %var:~n,k%, donde "%var" representa la cadena de caracteres que se van a interceptar, "~" toma el identificador del carácter, "n" representa la posición inicial de la interceptación de caracteres y "k " representa la posición final de la interceptación (excluyendo este carácter). Los ejemplos son los siguientes

@echo off
set str=holamundo~
echo str=%str% 
echo str:~0,3=%str:~0,3%
echo str:~3=%str:~3%
echo str:~-3=% cadena:~-3% 
eco cadena:~0,-3=%cadena:~0,-3% 
pausa 

El resultado es el siguiente:

str=holamundo~
str:~0,3=hel
str:~3=loworld~
str:~-3=ld~
str:~0,-3=holamundo

Reemplazo de cadena: use el comando %var:old_str=new_str%  , por ejemplo:

@echo off 
set str=HolaMundo~
set temp=%str:hola=Mi% 
echo %temp% 
pausa 

El resultado es el siguiente:

Mi mundo ~

7. comando remoto 

 El carácter de comentario también se puede sustituir por dos dos puntos (::)

8. comando de nivel de error 

Código de retorno del resultado de la ejecución del programa, se devuelve 0 si la ejecución es exitosa, se devuelve 1 si la ejecución falla.

9. iniciar  comando

Inicia una ventana separada para ejecutar el programa o comando especificado y el programa continúa ejecutándose. INICIO [comando/programa] [parámetros]

10. comando cls 

Borrar contenido de la pantalla

11.  comando de ayuda

Proporciona información de ayuda para los comandos de Windows AYUDA [comando]

12. ¿Lograr interacción automática?

La entrada interactiva automática se puede lograr mediante la redirección. Supongamos que el script con el que se debe interactuar es A.exe y que el script debe ingresar 1, 2 y 3 en secuencia. Puede tomar la siguiente forma:

@echo off 
del test.txt
echo 1 > test.txt
echo 2 >> test.txt
echo 2 >> test.txt
A.exe < test.txt
pausa 

13. comando si/si no

    Las declaraciones condicionales if/else se utilizan para determinar si se cumplen las condiciones especificadas, decidiendo así ejecutar diferentes comandos. Utilice IF en CMD /? para abrir la ayuda del sistema de IF. IF tiene tres usos básicos, como se indica a continuación

IF [NOT] ERRORLEVEL comando de número
IF [NOT] cadena1==cadena2 comando
IF [NOT] EXIST comando de nombre de archivo

 ilustrar:

  NOT: Especifica que Windows debe ejecutar el comando solo si la condición es falsa.
  Número ERRORLEVEL: La condición especificada es verdadera si la última ejecución del programa devuelve un código de salida igual o mayor que el número especificado.
  string1==string2: la condición especificada es verdadera si la cadena literal especificada coincide.
  Nombre de archivo EXISTENTE: si el nombre de archivo especificado existe, la condición especificada es verdadera.
  comando: si se cumplen las condiciones, especifique el comando que se ejecutará. Si la condición especificada es FALSA, el comando puede ir seguido de un comando ELSE, que ejecutará el comando después de la palabra clave ELSE.

Combate Práctico 1: Presta atención a los espacios antes y después de los corchetes de declaración

@echo desactivado
        SI EXISTE ./filename.txt (
            echo nombre de archivo sale.
        ) ELSE (
            echo nombre de archivo. falta.
        )

pausa

 O si se colocan todos en la misma línea, son válidas las siguientes cláusulas:

SI EXISTE nombre de archivo. (salir del nombre del archivo de eco.) ELSE nombre del archivo de eco. desaparecido.

Combate práctico dos:

@echo off

set /p var="Ingrese el número(1,2,3):"

if %var% == 1 (
  echo "el número igual a 1"
) else if %var% == 2 (
  echo " el número igual a 2"
) else if %var% == 3 (
  echo "el número igual a 3"
) else (
  echo "ingrese un número incorrecto, salga del programa."
)

pausa

Si las extensiones de comando están habilitadas, el IF cambia de la siguiente manera:

IF [/I] cadena1 comando de comparación cadena2
IF CMDEXTVERSION comando de número
IF DEFINED comando de variable

  Entre ellos, la operación de comparación puede ser:

EQU - igual a
NEQ - diferente a
LSS - menor que
LEQ - menor o igual a
GTR - mayor que
GEQ - mayor o igual a

El modificador /I (si se especifica) indica que la comparación de cadenas que se va a realizar no distingue entre mayúsculas y minúsculas. El modificador /I se puede utilizar en forma de cadena1==cadena2 de IF. Estas comparaciones son universales; la razón es que si cadena1 y cadena2 constan de números, las cadenas se convertirán en números para la comparación numérica.

14. Para declaración

 En la ventana de la línea de comando cmd, ingrese ayuda para o para /? para ver cómo usar la instrucción for. El formato básico de la declaración for es el siguiente:

  FOR %variable IN (establecer) comando DO [parámetros de comando]

  Descripción de parámetros:

%variable especifica un parámetro reemplazable de una sola letra. Nota: Utilice %%variable (conjunto) en secuencias de comandos por lotes
para especificar un archivo o un grupo de archivos. Se pueden utilizar caracteres comodín.
comando especifica el comando a ejecutar en cada archivo.
parámetros-comando especifica parámetros o modificadores de línea de comando para un comando específico.

  La declaración for también tiene 4 parámetros, a saber, /d /r /l /f. Los comandos de la declaración for correspondientes a estos 4 parámetros se presentan a continuación.

(1) formato de declaración del parámetro /D

FOR /D %variable IN (establecer) comando DO [parámetros-comando]

 Descripción: si el conjunto (conjunto) contiene caracteres comodín, la especificación coincide con el nombre del directorio, no con el nombre del archivo.

 Ejemplo: imprima el nombre del directorio en el directorio raíz de la unidad D

@echo desactivado
para /d %%i en (d:/*) hacer (
  echo %%i
)
pausar

(2) formato de declaración del parámetro /R

FOR /R [[unidad:]ruta] %variable IN (establecer) comando DO [parámetros-comando]

  Descripción: consulta recursivamente archivos coincidentes en el directorio especificado. El directorio actual se utiliza de forma predeterminada.

  Ejemplo: imprimir archivos con los sufijos .log y .py en el directorio y subdirectorios de la unidad D

@echo desactivado
para /rd:/ %%i en ( *.txt *.py ) hacer (
  echo %%i
)
pausar

(3) formato de declaración del parámetro /L

FOR /L %variable IN (inicio, paso, fin) Comando DO [parámetros-comando]

  El conjunto representa una secuencia de números en incrementos de principio a fin. Por lo tanto, (1,1,5) producirá la secuencia 1 2 3 4 5 y (5,-1,1) producirá la secuencia (5 4 3 2 1)

Ejemplo: imprimir números pares hasta 10

@echo desactivado
para /l %%i en (2,2,10) hacer (
  echo %%i
)
pausa

(4) El parámetro /F de la declaración FOR incluye los siguientes tres formatos de comando:

  FOR /F ["opciones"] %variable IN (conjunto de archivos) comando DO [parámetros-comando]
  FOR /F ["opciones"] %variable IN ("cadena") comando DO [parámetros-comando]
  FOR /F [ "opciones"] %variable IN ('comando') DO comando [comando-parámetros]

  Nota: Los parámetros que contienen /F pueden procesar el contenido del archivo (conjunto de archivos), cadenas ("cadena") y valores devueltos al ejecutar el comando especificado ("comando"). Los requisitos relacionados se pueden lograr estableciendo el valor ["opciones"]. El valor ["opciones"] contiene las siguientes palabras clave:

eol=c omite líneas que comienzan con caracteres c durante el procesamiento, generalmente se usa para omitir líneas de comentarios.
skip=n salta n líneas al principio del archivo
delims=xxx especifica el conjunto de delimitadores. Esto reemplaza el conjunto predeterminado de delimitadores para espacios y tabulaciones.
tokens=x,y,mn es el procesamiento de cada campo separado.
usebackq debe tenerse en cuenta al utilizar comillas dobles para incluir nombres de archivos. Para obtener más información, utilice la ayuda para ver

  Es posible que algunas partes de la descripción anterior no sean fáciles de descifrar. Será más rápido comprender el efecto después de aprender y ejecutar los siguientes ejemplos para observar los resultados.

  Ejemplo: manipular el contenido del archivo temp.txt.

@echo off

escriba nul > temp.txt
echo ;Prueba del parámetro /f >> temp.txt
echo line1 1 2 3 >> temp.txt
echo line2 1 2 3 >> temp.txt
echo line3 1 2 3 >> temp. txt
eco 11 12 13 14 15 16 >> temp.txt
eco 21,22,23,24,25,26 >> temp.txt
eco 31-32-33-34-35-36 >> temp.txt
para /F "skip=4 eol=; tokens=1,3* delims=,- " %%i en (temp.txt) hacer (
  echo i=%%i, j=%%j, k=%%k
)
pausar
del temp.txt

 El resultado es el siguiente:

 i=11, j=13, k=14 15 16
 i=21, j=23, k=24,25,26
 i=31, j=33, k=34-35-36

  Breve descripción del código clave del programa:

skip=4: omite las primeras 4 líneas del archivo temp.txt.
eol=;: Ignore las líneas que comienzan con dos puntos y salte directamente sin procesar
delims=,-: Especifique los delimitadores como coma (,), signo menos (-) y espacio. El espacio debe colocarse al final
tokens=1, 3*: Asigne el primer campo separado por el delimitador especificado a la variable i, asigne el segundo campo a la variable j y asigne los campos restantes a la variable k. Nota: La variable i se declara explícitamente en la declaración for, y la variable j y la variable k se declaran implícitamente mediante la opción tokens=.

 Sugerencia: si aún no lo comprende bien, puede modificar skip, eol, delims, tokens anteriores y ejecutar el resultado de observación.

6. Comandos de operación de archivos

(1) comando copiar archivo copiar

copiar d:\temp1\file1.txt d:\temp2 Copiar el archivo file1.txt al directorio temp2. ​​Si aparece el mismo archivo,
copiar d:\temp1\file1.txt d:\temp2 /y Copiar el archivo file1. txt al directorio temp2, si hay los mismos archivos sobrescribiendo los archivos originales, no se mostrará ningún mensaje.
copy d:\temp1\* d:\temp2 /y Copia todos los archivos en el directorio temp1 al directorio temp2. son los mismos archivos, los archivos originales se sobrescribirán y no se mostrará ningún mensaje.

(2) comando de copia del directorio xcopy

xcopy temp1 d:\temp2 /y copia los archivos del directorio temp1 al directorio temp2, excluyendo los archivos del subdirectorio temp1.
xcopy temp1 d:\temp2 /s /e /y Copie los archivos del directorio temp1 al directorio temp2, incluidos los archivos del subdirectorio temp1

(3) escriba el comando para mostrar el contenido del archivo

escriba archivo1.txt Ver el contenido del archivo archivo1
tipo archivo1.txt archivo2.txt #Ver el contenido del archivo archivo1 y archivo2
escriba archivo1.txt > archivo2.txt #Redireccionar el contenido del archivo archivo1.txt a archivo2.txt
escriba nul > archivo1.txt # Crear un archivo

(4) comando ren para cambiar el nombre del archivo

ren d:\temp1\file1.txt file2.txt Modifique el archivo file1.txt en el directorio temporal a file2.txt

(5) comando del eliminar archivo

del d:\temp1\file1.txt Elimina el archivo file1.txt en el directorio temporal
del d:\temp\*.txt Elimina el archivo con el sufijo .txt en el directorio temporal

7. Comandos de operación del directorio 

(1) cd muestra el directorio actual o cambia de directorio

cd d:\temp1 Cambie al directorio temp1, el directorio actual es la unidad d
cd /d d:\temp1 Cambie al directorio temp1, el directorio actual no es la unidad d
cd .. Cambie al directorio de nivel superior

(2) mkdir crea un directorio

mkdir test crea el directorio de prueba en el directorio actual mkdir d:\temp1\test crea el directorio de prueba en el directorio temp1. Si el directorio temp1 no existe, se creará automáticamente.

(3) directorio de eliminación de rmdir

rmdir d:\temp1 elimina el directorio vacío temp1. Si no está vacío, la eliminación falla.rmdir
d:\temp1 /s /q elimina el directorio temp1, incluidos los subdirectorios (/s), y no solicita (/q) al eliminar.

(4) dir muestra subdirectorios y archivos en el directorio

dir d:\temp1 muestra la información del archivo y directorio en el directorio temp1. La información mostrada incluye fecha, hora, tipo de archivo y nombre de archivo. dir d:\temp1 /a: a /b solo muestra los archivos en el directorio temp1
( excluyendo subdirectorios). La ruta absoluta del archivo, sin mostrar la fecha, hora, tipo de archivo y nombre de archivo
dir d:\temp1 /b /s /o:n /a:a Muestra la ruta absoluta de todos los archivos bajo temp1 ruta (incluidos los subdirectorios). Los archivos de salida se ordenan según el orden numérico de los nombres de los archivos
dir d:\temp1\*.txt /a:a /b /o:n Muestra los archivos con sufijo .txt y ordénalos según el orden de los nombres de los archivos. (/on). Para otros métodos de clasificación, consulte el directorio de ayuda.

 Nota:
  (1) /b significa eliminar la información resumida y solo mostrar la ruta completa, /s significa enumerar el contenido de la carpeta en un bucle, /o:n significa ordenar según el nombre del archivo, /a: un medio para enumerar solo los archivos sin enumerarlos.Dar otros.
  (2) Ni dir /b ni dir /s por sí solos mostrarán la ruta completa. Sólo la combinación de estos dos mostrará la ruta completa.  

Supongo que te gusta

Origin blog.csdn.net/weixin_47465999/article/details/130704447
Recomendado
Clasificación