0

我发现我的批处理脚本无法正常工作。我想编写一个删除文件中特定行的函数,这是我的代码:

:unmark
    type %MARKPATH% | findstr /B /V %1 > %MARKPATH_COPY%
GOTO:EOF

是的,它可以工作,但它会在新文件中写入新内容(没有特定行)。但不是它,我想覆盖现有文件。像那样:

:unmark
    type %MARKPATH% | findstr /B /V %1 > %MARKPATH%
GOTO:EOF

但它不起作用,代码执行后文件为空。你能帮我弄清楚什么是问题以及如何解决它吗?

4

2 回答 2

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
于 2013-08-24T10:02:07.140 回答
0

我想我找到了解决问题的方法(也许不切实际,但确实有效)

:unmark
    set LASTPATH=%CD%
    cd %MARKPATH%
    type %MARKFILE% | findstr /B /V %1 > %MARKFILECOPY%
    del %MARKFILE%
    ren %MARKFILECOPY% %MARKFILE%
    cd %LASTPATH%
GOTO:EOF
于 2013-08-24T09:55:53.390 回答