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
將打印的文件(abc
或abc.txt
)和(def
或def.txt
)和(ghi
或ghi.txt
)和(yellow.txt
或yellow.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.txt
filelist
。如果沒有提供參數,則將分配爲至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
。
有一個語法問題:'if「%PrinterFile%」==「」('(注意額外的引號和移動的空間) – aschipfl
由於某些原因,它仍然只是退出並且從不實際輸出文本文件到記事本中。 – bodotheguy
是的,因爲你的第一行;我只是想指出一個語法錯誤,但我沒有提供解決方案;你在找什麼叫做「命令行參數」 - 參見['call'](http ://ss64.com/nt/call.html)命令(在命令提示符窗口中鍵入'call /?'並閱讀幫助文件)... – aschipfl