我发现我的批处理脚本无法正常工作。我想编写一个删除文件中特定行的函数,这是我的代码:
:unmark
type %MARKPATH% | findstr /B /V %1 > %MARKPATH_COPY%
GOTO:EOF
是的,它可以工作,但它会在新文件中写入新内容(没有特定行)。但是,我想要覆盖现有文件而不是它。像那样:
:unmark
type %MARKPATH% | findstr /B /V %1 > %MARKPATH%
GOTO:EOF
但它没有用,代码执行后文件为空。你能帮我弄清楚什么是问题以及如何解决它?
答案 0 :(得分:1)
这种风格应该有效:
@echo off
set "MARKPATH=%userprofile%\desktop\input.txt"
set "MARKPATH_COPY=%userprofile%\desktop\searchfile.txt"
findstr /B /V "%~1" <"%markpath%" > "%MARKPATH_COPY%"
move /y "%MARKPATH_COPY%" "%markpath%" >nul
答案 1 :(得分:0)
我想我找到了解决问题的方法(可能不实用,但有效)
:unmark
set LASTPATH=%CD%
cd %MARKPATH%
type %MARKFILE% | findstr /B /V %1 > %MARKFILECOPY%
del %MARKFILE%
ren %MARKFILECOPY% %MARKFILE%
cd %LASTPATH%
GOTO:EOF