Удаление пользовательского ввода из текстового файла с помощью пакета - PullRequest
1 голос
/ 18 ноября 2010

У меня проблема с пакетным скриптом, который я пытаюсь сделать. Вскоре я искал в Интернете все возможные способы удаления текста из текстового файла, но, похоже, не могу понять, как это правильно.

Код, с которым у меня проблема:

:delete
set /p dnr=Write what you want to delete?
for /f "tokens= delims= " %%c in (document.txt) do (
set str=%%c
)
find /v "!str!" < document.txt > deleted.txt
pause
goto :begin

Код не возвращает никаких ошибок и перемещает текст в «удаленный.txt», но я не могу заставить его удалить запись из document.txt.

Если бы кто-нибудь мог указать мне правильное направление, это было бы очень дорого.

Спасибо

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Проблема в том, что% str% содержит последнюю (непустую) строку документа.txt, но не строку, которую вы хотите удалить (это% dnr%). Лучше использовать отложенное расширение (! Dnr!) Вместо% dnr%, чтобы сохранить специальные символы в dnr

:delete
setlocal enableDelayedExpansion
set /p dnr=Write what you want to delete?
find /v "!dnr!" document.txt > deleted.txt
pause
0 голосов
/ 18 ноября 2010

Переменные среды читаются с использованием% var%, поэтому вам нужно изменить эту строку на

find /v "%str%" < document.txt > deleted.txt

Кроме того, я сомневаюсь, нужно ли использовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...