2015-09-26 5 views
-1

Я использую скрипт из этой темы accepted answer from Mofi. Сценарий копирует папки и сохраняет их в текстовом файле, чтобы исключить однократно скопированные папки при следующем запуске.Batch - найти строку в текстовом файле и удалить полную строку

Иногда у меня есть папки под названием [incomplete]-different.names, и я не хочу копировать эти папки. Я хочу, чтобы все папки со строкой [incomplete]- и имя позади были пропущены или даже не записаны в текстовый файл %CurrentList% для дальнейшей обработки.

Это мои предыдущие попытки, но до сих пор я не мог встать и работать со сценарием сверху. Помощь будет приятной, и спасибо заранее.

Попробуйте 1:

for /f "delims=" [incomplete]-%%D in ("%CurrentList%") do ( set str=%%D set str=!str: =! set str=!str: %%D =! echo !str!

Попробуйте 2:

findstr /v /b /c:"[incomplete]-"%%D" "%CurrentList%" del "%%D"

+0

'findstr' использует регулярные выражения и' ['и'] 'являются символами регулярного выражения. Не видя примеров того, что вы пытаетесь отфильтровать, мы не знаем, какие символы нужно обрабатывать. Кроме того, 'find.exe' - более простой фильтр. Но без точной информации вы часто не получите хороший совет. – foxidrive

ответ

0

Вы были очень близки с вашей второй попытки.

Если вы хотите удалить строки из% CurrentList%, содержащие строку [incomplete]-, вы можете просто перенаправить вывод findstr /v в файл temp и затем перезаписать CurrentList этим файлом.

findstr /v /c:"[incomplete]-" "%CurrentList%" >tmpList.txt 
move /y tmpList.txt "%CurrentList%" >nul 
Смежные вопросы