Script por lotes para eliminar archivos


96

Tengo un script por lotes de la siguiente manera.

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

El código anterior elimina todos los archivos ".txt" y ".tsv" de todas las carpetas excepto de la carpeta TEST 100%. Para eliminar los archivos de, TEST 100%obtengo el error como The Path could not be found. Supongo que el símbolo% en el nombre de la carpeta crea el problema. ¿Alguien puede orientarme para resolver el problema y eliminar los archivos de la carpeta TEST 100%?


¿Por qué tiene una cotización en la primera línea? Además, ¿por qué se refiere a la unidad cuando su archivo por lotes ya cambió a esa unidad con la primera línea? Intenté replicar tu problema y todo funcionó. ¿Confirmó que el Archivo existe en Prueba 100%?
— RonaldBarzell

Respuestas:


112

Necesitas escapar del% con otro ...

del "D:\TEST\TEST 100%%\Archive*.TXT"

No puedo hablar por el OP, pero en mi sistema no hay problema para encontrar una ruta con%, y escapar con %% evita que el sistema la encuentre.
— RonaldBarzell

@ user1161318 - Lo probé en Windows 7. Sin el escape, en un archivo por lotes, el resultado es "El sistema no puede encontrar la ruta especificada". Como lo publiqué, funciona.
— Russ Freeman

Ok, en XP obtengo los resultados opuestos. Encuentra la ruta bien con%, pero no la encuentra con %%.
— RonaldBarzell

5
Supongo que lo está haciendo desde el símbolo del sistema y no desde un archivo por lotes.
— Russ Freeman

2
Probablemente tengas razón. Sigo olvidando que dentro de un archivo por lotes,% es un prefijo de variable y debe escapar de él. +1
— RonaldBarzell

12

Hay varias formas de hacer las cosas por lotes, por lo que si escapar con un porcentaje doble %%no le funciona, puede intentar algo como esto:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

Como funciona esto:

set olddir=%CD%establece la variable "olddir"o cualquier otro nombre de variable que desee en el directorio desde el que se inició el archivo por lotes.

cd /d "path of folder"cambia el directorio actual que verá el lote. Conserve las citas y cambie la ruta de la carpeta a la ruta que desee.

del "file name/ or *.txt etc..."eliminará el archivo en el directorio actual que está viendo su lote, simplemente no agregue una ruta de directorio antes del nombre del archivo y solo tenga el nombre completo del archivo o, para eliminar varios archivos con la misma extensión con *.txto cualquier extensión que necesite.

cd /d "%olddir%"toma la variable guardada con su ruta anterior y regresa al directorio con el que comenzó el lote, no es importante si no desea que el lote regrese a su ruta de directorio anterior, y como se indicó antes, el nombre de la variable se puede cambiar a lo que desee cambiando el set olddir=%CD% line.


Esto se hace mejor a través pushd "folder" && del "filename" & popd.
— Nuno André

10

Digamos que guardó su software en su escritorio.
si desea eliminar una carpeta completa como un programa de desinstalación, puede usar esto.

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

esto eliminará toda la carpeta llamada software y todos sus archivos y subcarpetas

Asegúrese de eliminar la carpeta correcta porque no tiene una opción Sí / No


4

Tenga en cuenta que los archivos que necesita eliminar tienen una extensión txty están ubicados en la ubicación D:\My Folder, entonces puede usar el siguiente código dentro del archivo bat.

cd "D:\My Folder"
DEL *.txt 

-7

en el código de lote, su ruta no debe contener ningún espacio, así que cambie el nombre de su carpeta de "TEST 100%" a "TEST_100%" y su nuevo código será del "D: \ TEST \ TEST_100% \ Archive * .TXT"

espero que esto resuelva su problema


6
Nunca escuché de eso. ¿Eso es nuevo? -Sarcasmo fuera. Funciona con espacios como lo hace sin ellos, siempre que lo ponga entre comillas.
— Blacktempel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.