2014-02-20 62 views
0

我在.bat文件中擁有此腳本,並且只想在文件末尾保留最近的100行。保留文本文件中的最後100行數據

如何刪除所有其他行?

@echo off 
REM *DATETIME2.BAT 
REM *Copy date and time to create a new log file 
echo.|date>>"\\spserver\myfolder\dt.tmp" 
echo.|time>>"\\spserver\myfolder\dt.tmp" 
IF NOT EXIST "\\spserver\myfolder\dt.tmp" GOTO Error1 
type "\\spserver\myfolder\dt.tmp"|FIND "current">"\\spserver\myfolder\dt.log" 
rem del "\\spserver\myfolder\dt.tmp" 
GOTO End 

:Error1 
Echo. 
Echo There was an error processing the command. 
Echo Unable to find temporary sort file DATETIME2.TMP. 
Echo. 
GOTO End 

:End 
+0

爲什麼一定要在一切名爲.bat腳本來完成?你不能製作一個外部程序並從批處理文件中調用它嗎? – Crono

+0

@Crono對於這個特定的任務,我希望這些指令能夠讓操作系統理解一些簡單的東西。我特別不想使用FileSystemObject庫,因爲此bat文件正在驗證使用該庫的腳本,並且存在一些問題。如果您有簡單的腳本+所需的相關蝙蝠代碼,請添加建議作爲答案。 – whytheq

回答

0

在這裏你去:

Call :Tail 100 dt.log tempout.txt 
move /y tempout.txt dt.log>nul 
exit /b 

:Tail <numlines> <FileIn> <FileOut> 
FOR /F "usebackq tokens=3,3 delims= " %%l IN (
    `find /c /v "" %2`) DO (call SET find_lc=%%l) 
SET /a linenumber=%find_lc%-%1 
IF %linenumber% LSS 1 (
    more +0 %2 >> %3 
) ELSE (
    more +%linenumber% %2 >> %3 
) 
+0

+1感謝您的幫助。我想我只需要替換這些位:?這有什麼有效的呢?它是否選擇目標100行並將它們移動到新文件,然後刪除舊文件?或者它是否使用臨時文件 - 將100行移入該文件,刪除原始文件中的所有文件,然後再移回100行? (MS-DOS對我來說很神祕) – whytheq

+0

它從第一個輸入文件讀取'',並將很多行寫入臨時文件。然後用temp將其覆蓋原稿。是的,你只需在'Call:Tail'行 –

+0

中使用你自己的值...你知道任何好的資源(除了SO)用於學習這種語言和它的能力嗎? – whytheq

相關問題