2012-10-01 64 views
2

我需要打印50個文本文件的最後一頁。目前,我每天都會打開所有50個文本文件,並逐個打印每個文件的最後一頁 - 這是一項非常痛苦的任務。批處理文件打印多個文本文件的最後一頁

我知道這個任務可以通過編寫一個批處理文件來完成,但是我對批處理編程完全一無所知。

希望得到任何幫助。

謝謝!

+0

是否要打印到屏幕或實際的打印機?另外,如何定義文本文件的「最後一頁」?一個文本文件可以使用換頁符來分隔頁面,但這不是典型的文本文件。大多數文本文件都是連續的線條流。您可以使用Anshu的想法在每個文件的末尾打印固定數量的行。 – dbenham

回答

3

下面的腳本將打印最後50行的文件(data.txt中)的

@echo OFF 

:: Get the number of lines in the file 
set LINES=0 
for /f "delims==" %%I in (data.txt) do (
    set /a LINES=LINES+1 
) 

:: Print the last 50 lines 
set /a LINES=LINES-50 
more +%LINES% < data.txt 

希望幫助!

+0

+1,有趣的想法。使用FIND/C來獲得行數要快得多:'(for/f %% N in('find/c/v「」^ dbenham

+0

感謝您的回覆。我可以知道將作業發送到網絡打印機的代碼嗎? – wksoh

+0

請檢查這個_http://www.robvanderwoude.com/printfiles.php_和_http://www.tomshardware.com/forum/226619-46-batch-command-print-text-file-network-printer_ – Anshu

0

充實了Anshu答案中的想法。這是一個腳本,它將打印當前目錄中所有.TXT文件的最後50行。輸出被髮送到默認打印機。

@echo off 
setlocal enableDelayedExpansion 
set "tempFile=%temp%\printEnd " 
set "pageSize=50" 

for %%F in (*.txt) do (
    for /f %%N in ('find /c /v "" ^<"%%F"') do set /a skip=%%N-pageSize 
    if !skip! lss 0 set skip=0 
    >"%tempFile%%%~nxF" more +!skip! "%%F" 
    notepad /p "%tempFile%%%~nxF" 
) 
echo "%tempFile%" 
2>nul del "%tempFile%*" 
+0

謝謝你你的幫助!代碼就像一個魅力。但是,是否可以添加一行以獲取記事本在橫向打印?現在它正在用肖像打印。謝謝。 – wksoh

+0

@wksoh - 我沒有線索。如果你想要風景,那麼這似乎應該是你的問題。 – dbenham

+0

@wksoh - 不可以。你不能這樣做。要做這樣的事情,你需要'啓動notepad.exe [filename.txt]',然後使用VBS'sendkeys'將正確的命令寫入記事本。 –

相關問題