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.