2014-11-14 277 views
0

我有多個.TXT文件,其中第二行是觀察摘要(即(452,246))。從多個文本文件中刪除第二行最後一行

儘管通過論壇搜索,我漸漸把這個代碼:

@echo off 
setlocal disableDelayedExpansion 
set file="test.txt" 
for /f %%N in ('find /c /v "" ^<%file%') do set skip=%%N 
(
for /f "delims=" %%L in ('findstr /n "^" %file%^|findstr /v "^%skip%:"') do (
set "ln=%%L" 
setlocal enableDelayedExpansion 
echo(!ln:*:=! 
endlocal 
) 
)>%file%.new 
move %file%.new %file% >nul 

此代碼工作完全在一個單一的文件,但我不知道如何改變這種運行它針對所有文件我的文件夾(* .txt)。

在此先感謝您的幫助。

回答

0

當你的代碼沒有你指出的東西,它會刪除該文件中的最後一行,而不是倒數第二,如果結果是你需要什麼,...

附上你的代碼的新外for循環,將遍歷文件列表裏面,從%file%更換新for替換參數

@echo off 
setlocal disableDelayedExpansion 

    for %%F in (*.txt) do for /f %%N in ('find /c /v "" ^< "%%~fF"') do (
     ( for /f "delims=" %%L in (
       'findstr /n "^" "%%~fF" ^|findstr /r /v /b /c:"%%N:"' 
      ) do (
       set "ln=%%L" 
       setlocal enableDelayedExpansion 
       echo(!ln:*:=! 
       endlocal 
      ) 
     ) > "%%~fF.new" 
     move "%%~fF.new" "%%~fF" 
    ) 
+0

的參考文件非常感謝你,這個伎倆。 – KD22 2014-11-17 14:16:50

0

你需要這樣的東西。 FOR %% A循環遍歷您設置爲「dirpath」的文件夾中的所有文本文件。

@echo off 
setlocal enableDelayedExpansion 
    Set "dirpath=PathtoYourFiles" 
    FOR %%A IN ("%dirpath%\*.txt") DO (
    set file=%%A 
    call :stripline 
    ) 

:stripline 
setlocal disableDelayedExpansion 
    for /f %%N in ('find /c /v "" ^<%file%') do set skip=%%N 
    (
    for /f "delims=" %%L in ('findstr /n "^" %file%^|findstr /v "^%skip%:"') do (
     set "ln=%%L" 
     setlocal enableDelayedExpansion 
     echo(!ln:*:=! 
     endlocal 
    ) 
    )>%file%.new 
    move %file%.new %file% >nul 
exit /b 

試試看。如果它不能正常工作,請使用%文件%痕像以下:

for /f "delims=" %%L in ('findstr /n "^" !file!^|findstr /v "^%skip%:"') do (
相關問題