2016-11-25 56 views
1

我已經達到了一個磚牆的一點點。我知道如何通過記事本在批處理文件中打印單個文本文件,但是當涉及到多個文本文件時,我被卡住了。這裏是我到目前爲止真的工作不正常,在所有:如何在批處理文件中打印多個文本文件

set /P PrinterFile= "Enter File Name:" | set PrinterFile2= "" | set PrinterFile3= "" | set PrinterFile4= "" | set PrinterFile5= "" 

if %PrinterFile%== ""(
    echo please enter valid file 
    pause 
) else (
    notepad.exe /P %PrinterFile% 
) 

pause 

我沒有完成if語句來檢查的人,因爲我不能得到的第一個工作。任何人都可以指出我正確的方向嗎?謝謝!

最後它需要能夠從0到5個文本文件。例如(批處理文件的名稱是printer.bat):

printer file1.txt file2.txt file3.txt 
+0

有一個語法問題:'if「%PrinterFile%」==「」('(注意額外的引號和移動的空間) – aschipfl

+0

由於某些原因,它仍然只是退出並且從不實際輸出文本文件到記事本中。 – bodotheguy

+0

是的,因爲你的第一行;我只是想指出一個語法錯誤,但我沒有提供解決方案;你在找什麼叫做「命令行參數」 - 參見['call'](http ://ss64.com/nt/call.html)命令(在命令提示符窗口中鍵入'call /?'並閱讀幫助文件)... – aschipfl

回答

1

printfiles.bat

@echo off 
setlocal 
for %%f in (%*) do (
if exist "%%~f" (notepad.exe /P "%%~f" 
) else (
    if exist "%%~f.txt" (notepad.exe /P "%%~f.txt" 
) else (
    echo "%%~f" not found 
) 
) 
) 

[未測試]

這應該工作。它簡單地處理作爲一個參數,以便

printfiles abc,def,ghi,yellow.txt 

將打印的文件(abcabc.txt)和(defdef.txt)和(ghighi.txt)和(yellow.txtyellow.txt.txt)如果存在的文件所提供的名稱列表。

這是否解決您的問題?


盛放的版本

@ECHO OFF 
SETLOCAL 
:: Get file list from command line 
SET "filelist=%*" 
IF DEFINED filelist GOTO printthem 
CLS 
ECHO Press ENTER to START printing 
:nextfile 
SET "filename=" 
SET /p "filename=Print : " 
IF DEFINED filename SET "filelist=%filelist%,"%filename%""&goto nextfile 
IF NOT DEFINED filelist ECHO no files specified&GOTO :EOF 

:printthem 
for %%f in (%filelist%) do (
if exist "%%~f" (notepad.exe /P "%%~f" 
) else (
    if exist "%%~f.txt" (notepad.exe /P "%%~f.txt" 
) else (
    echo "%%~f" not found 
) 
) 
) 

GOTO :EOF 

第一件事:從命令行負載filelist,所以執行printfiles abc,def,ghi,yellow.txt將會分配給abc,def,ghi,yellow.txtfilelist。如果沒有提供參數,則將分配爲filelist

如果filelist被定義(即,包含這意味着被提供的命令行參數的值),然後進入到標籤printthem

否則,清除屏幕和如何消息Press ENTER to START printing

然後設置filename什麼也沒有(因爲set /p與簡單輸入將離開值不變)並提示輸入與Print :。鍵盤輸入將被放入filename

如果有一個(假設的,文件名)項,然後在逗號後重復"the filename"filelist的末尾並重復請求一個文件名。

當簡單地使用輸入filename將是空的,因此不確定的,所以我們繼續:printthem提供filelist不是空的。

從這裏,我們簡單地處理filelist作爲一個逗號分隔的一系列文件名 到%%f。如果輸入的文件名存在,請使用記事本打印,如果不存在,請嘗試追加.txt作爲名稱,如果即使失敗,也會顯示錯誤消息。

%%~f刪除%%f中的項目引號。然後重新引用,以便可以打印filenames containing spaces

+0

這是應該自行工作還是應該保持第一行? – bodotheguy

+0

是我發佈的。如果你真的想要通過一個即時和接受的週期,那麼很容易安排。 – Magoo

+0

如果你有時間,你能解釋每一行嗎? – bodotheguy

相關問題