1

Этот код работает нормально. удаляет файлы из списка файлов:

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

Но почему ниже не работает? Он удаляет сам файл .lst :

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

Также это не работает тоже:

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

file.lst и default.lst содержат что-то вроде этого:

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

2 ответа2

1

for /f интерпретирует содержимое скобок следующим образом:

  • file - файл обрабатывается построчно.
  • "text" - обрабатывается только текст.
  • 'command' - вывод команды обрабатывается построчно.

Вот как вы должны редактировать свою партию:

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

Что нужно для for при удалении файла списка? Просто используйте что-то вроде:

if exist filename del filename

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .