我试图制作批处理脚本时遇到问题。我很快就在整个互联网上阅读了关于从文本文件中删除文本的不同方法,但我似乎无法做到正确。
我遇到的问题是:
: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
代码不会返回任何错误,并且会将文本移动到“deleted.txt”,但我似乎无法从document.txt中删除该记录。
如果有人能指出我朝着正确的方向发展,那将会非常受欢迎。
由于
答案 0 :(得分:1)
问题是%str%包含document.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
答案 1 :(得分:0)
使用%var%读取环境变量,因此您需要将该行更改为
find /v "%str%" < document.txt > deleted.txt
另外,我怀疑是否有必要使用&lt;在document.txt之前。你应该可以省略它。