2013-08-24 165 views
0

我發現我的批處理腳本工作不正常。我想寫它刪除特定的線路在文件中的函數,這是我的代碼:使用批處理腳本刪除文件中的特定行

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

是的,它的工作原理,但它在一個新的文件中寫入新的內容(沒有具體的線)。但是,而不是它,我想覆蓋現有的文件。像這樣:

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

但它不工作,代碼執行後文件爲空。你能幫我弄清楚什麼是問題以及如何解決它?

回答

0

我想我找到了解決我的問題(也許並不實用,但它的工作)

:unmark 
    set LASTPATH=%CD% 
    cd %MARKPATH% 
    type %MARKFILE% | findstr /B /V %1 > %MARKFILECOPY% 
    del %MARKFILE% 
    ren %MARKFILECOPY% %MARKFILE% 
    cd %LASTPATH% 
GOTO:EOF 
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 
+0

的最佳解決方案,但到底是什麼> NUL嗎?編輯:我只是檢查出來,它不能正常工作。如果它包含findstr中提供的字符串,則會寫入行。不要刪除它。 – Andrius

+0

> nul隱藏'MOVE'打印的信息以保持屏幕清晰。 findstr命令使用與您的示例相同的開關。那時你也一定是錯的。 :d – foxidrive

相關問題