我有多个.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 :(得分:0)
你需要这样的东西。 FOR %% A循环遍历您设置为&#34; dirpath&#34;的文件夹中的所有文本文件。
@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
试试吧。如果它不起作用,请在%file%上使用!标记,如下所示:
for /f "delims=" %%L in ('findstr /n "^" !file!^|findstr /v "^%skip%:"') do (
答案 1 :(得分: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"
)