我有一個充滿URL的文本檔案,當我計算檔案內的行數時,只要行數大于1000,我就想洗掉后面的行,保留第一個1000行。
這是我的代碼,但我不知道我做錯了什么。
用這個腳本位置創建一個text.txt檔案,并把超過1000行的垃圾放入其中進行測驗。
@ECHO OFF & setLocal EnableDelayedExpansion
顏色 0A
%*
SET root_path=%~dp0
設定text_name=text.txt
設定 text_name_output=text_text.txt
設定max_line_count=1000
設定/a counter=0
for /f %%a in (%root_path%%text_name%) do (
設定/a counter = 1
echo 行數: !counter!
如果 !counter! LSS %max_line_count% (
echo 小于
) 否則 (
echo 多于,所以洗掉這些行數
(for /f "tokens=1,* delims=[]" %%a in ('type %root_path%%text_name%^|find /v /n "") do (
echo/%%a|findstr /x "!counter!" >nul || echo/%%b
))>%root_path%%text_name_output%.
)
)
暫停
uj5u.com熱心網友回復:
我想明白了,如果文本或檔案有超過1000行,那么就洗掉后面的所有行。
@ECHO OFF & setLocal EnableDelayedExpansion
color 0A
%*
SET root_path=%~dp0
設定text_name=text.txt
設定 text_name_output=text_text.txt
設定max_line_count=1000
設定/a counter=0
for /f %%a in (%root_path%%text_name%) do set /a counter =1
設定 /a "counter=%counter%-%max_line_count%"
more %counter% "%root_path%%text_name%" >"%root_path%%text_name_output%"
move /y "%root_path%%text_name_output%" "%root_path%%text_name%" >nul
暫停
uj5u.com熱心網友回復:
使用批處理檔案來完成這項任務是絕對不合適的,然而,這里有一個基本的結構,它應該能完成你的要求,不管這有多慢。
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
設定"InFile=text.txt"。
設定"LineLimit=1000"。
設定"OutFile=output_text.txt"。
如果不存在 "%InFile%" 退出/B
(
對于 /F Delims^= %%G In (
'%SystemRoot%System32findstr.exe /N /R "^" "%InFile%" 2^>NUL'
) 做到(
設定"}=%%G"
設定/A "{=%%G" 2>NUL
SetLocal EnableDelayedExpansion
如果!{!Gtr %LineLimit% (
EndLocal
轉到下一個
)
Echo(!}:*:=!
EndLocal
)
) 1>"%OutFile%".
:下一步
uj5u.com熱心網友回復:
聽起來你想要一個head程式。這很容易在PowerShell中完成。
Get-Content -Path '. ext.txt' -First 1000 >'.output_text.txt' 。
如果你必須從cmd.exe運行,可以使用以下方法。
powershell -NoLogo -NoProfile -Command ^.
"Get-Content -Path '. ext.txt' -First 1000 > '.output_text.txt'"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324697.html
標籤:
