Buscar..


Introducción

En este tema, aprenderá cómo crear, editar, copiar, mover y eliminar archivos en lotes.

Creando un archivo en lote

Puede haber varias razones por las que desea crear un archivo de texto por lotes. Pero cualquiera que sea la razón, así es como lo haces.

Si desea sobrescribir un archivo de texto existente, use > . Ejemplo:

@echo off
echo info to save > text.txt

Pero si desea agregar texto a un archivo de texto ya existente, use >> . Ejemplo:

@echo off
echo info to save >> text.txt

Si necesita guardar varias líneas de texto en un archivo use ()>text.txt Ejemplo:

@echo off
(echo username
 echo password)>text.txt

Cómo copiar archivos en lote

Es posible que desee copiar archivos de un lugar a otro. En este ejemplo te enseñaremos.

Puedes usar el comando xcopy . La sintaxis es xcopy c:\From C:\To

Ejemplo:

@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop

También hay interruptores que puede utilizar. Si desea verlos, abra el símbolo del sistema mediante Start Menu -> Accessories -> Command Prompt y luego escriba xcopy /?

Mover archivos

Usando el comando mover, puedes mover archivos:

@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul

Meow.bat representa qué archivo mover. La "Carpeta Meow" mueve Meow.bat a la Meow Folder . /Y dice no pedir confirmación. Reemplazando eso con /-Y hace que el archivo por lotes solicite confirmación. El >nul oculta la salida del comando. Si no tuviera >nul , generaría:

    1 File Moved

Borrando archivos

Usando el comando DEL (alias para ERASE ), uno puede eliminar archivos.

@echo off
del foo.ext

Este comando eliminará foo.ext del directorio actual. También se puede especificar la ruta y el archivo, como:

del C:\Foo\Bar\Baz.ext

Pero siempre es ideal poner comillas ( " ) alrededor de las rutas, vea aquí la razón.


Hay algunas banderas disponibles para DEL .

Bandera Función
/P Solicita al usuario antes de eliminar el (los) archivo (s)
/F Eliminar forzosamente los archivos de solo lectura
/S Eliminar archivo (s) en subdirectorios
/Q Previene el aviso del usuario
/A Filtro: Sólo eliminar archivo atribuido específico,
usando el - carácter significa no atribuido como ese tipo.

Copiar archivos sin xcopy

En este ejemplo , el usuario BoeNoe mostró cómo usar el comando xcopy para copiar archivos. También hay un comando adicional llamado copy .

Aquí hay un ejemplo simple:

copy foo.ext bar.ext

Esto copia foo.ext a bar.ext , y crea bar.ext cuando no existe. También podemos especificar rutas al archivo, pero siempre es ideal colocar comillas ( " ) alrededor de las rutas, consulte aquí el motivo.


También hay muchas banderas disponibles para copy , ver copy /? o help copy en un símbolo del sistema para ver más.

Edición de la línea n de un archivo

El archivo por lotes no viene con un método incorporado para reemplazar la línea n de un archivo, excepto replace y append ( > y >> ). Usando for bucles, podemos emular este tipo de función.


@echo off
set file=new2.txt

call :replaceLine "%file%" 3 "stringResult"

type "%file%"
pause
exit /b

:replaceLine <fileName> <changeLine> <stringResult>
setlocal enableDelayedExpansion

set /a lineCount=%~2-1

for /f %%G in (%~1) do (
    if !lineCount! equ 0 pause & goto :changeLine
    echo %%G>>temp.txt
    set /a lineCount-=1
)

:changeLine
echo %~3>>temp.txt

for /f "skip=%~2" %%G in (%~1) do (
    echo %%G>>temp.txt
)

type temp.txt>%~1
del /f /q temp.txt

endlocal
exit /b
  • La secuencia de comandos principal llama a la función replaceLine , con el nombre de archivo / la línea a cambiar / y la cadena a reemplazar.

  • La función recibe la entrada.

    • Se realiza un bucle a través de todas las líneas y echo a un archivo temporal antes de la línea de reemplazo
    • Se hace echo la línea de reemplazo del archivo.
    • Continúa la salida al resto del archivo.
    • Copia el archivo temporal al archivo original.
    • Y elimina el archivo temporal.
  • La secuencia de comandos principal recupera el control y type el resultado.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow