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
Meisam Moradi
fuente

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"
Vlastimil Ovčáčík
fuente
0

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

if exist filename del filename
Karan
fuente
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