Comando por lotes para eliminar archivos de la lista de archivos [duplicar]


1

Este código funciona bien. elimina archivos de una lista de archivos:

For /f %%a in (file.lst) do del %%a

Pero, ¿por qué el siguiente no funciona? Elimina el .lstarchivo en sí:

if exist file.lst (   
  set filelist="file.lst"    
) else (    
  set filelist="default.lst"    
)    
for /f %%b in (%filelist%) do del %%b    

Además, esto tampoco funciona:

for /f %%b in ("%filelist%") do del %%b        

file.lst y default.lst contienen algo como esto:

d:\1.txt    
d:\2.txt    
d:\abcd.bmp

Respuestas:


1

for /f interpreta el contenido de paréntesis como este:

  • file - el archivo se procesa línea por línea.
  • "text" - solo se procesa el texto.
  • 'command' - La salida del comando se procesa línea por línea.

Así es como debe editar su lote:

if exist file.lst (
    set "filelist=file.lst"
) else (
    set "filelist=default.lst"
)
for /f %%b in (%filelist%) do del "%%b"

0

¿Para qué es necesario foreliminar el archivo de lista? Solo usa algo como:

if exist filename del filename

Por cierto, tu primer bloque de código if-else funciona bien. El segundo bucle también trabajará, aunque si tienes set filelist="file.lst"a continuación, "%filelist%"hará que las cotizaciones a duplicarse.
Karan

No elimina el archivo de lista cuando menciono el nombre del archivo de lista. pero elimina el archivo de lista cuando pongo el nombre del archivo de lista en una variable.
Meisam Moradi

Gracias Karan, eliminé las comillas y funciona: set filelist = file.lst
Meisam Moradi
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.