Batch file 如何在批处理文件中打印多个文本文件
我碰到了一堵小砖墙。我知道如何通过记事本在批处理文件中打印单个文本文件,但当涉及到多个文本文件时,我就卡住了。以下是迄今为止我所掌握的根本无法正常工作的信息:Batch file 如何在批处理文件中打印多个文本文件,batch-file,Batch File,我碰到了一堵小砖墙。我知道如何通过记事本在批处理文件中打印单个文本文件,但当涉及到多个文本文件时,我就卡住了。以下是迄今为止我所掌握的根本无法正常工作的信息: set /P PrinterFile= "Enter File Name:" | set PrinterFile2= "" | set PrinterFile3= "" | set PrinterFile4= "" | set PrinterFile5= "" if %PrinterFile%== ""( echo please
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
):
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
)
这能解决你的问题吗
完整版本
@ECHO关闭
SETLOCAL
::从命令行获取文件列表
设置“文件列表=%*”
如果定义了文件列表,则转到打印它们
CLS
按回车键开始打印
:下一个文件
设置“文件名=”
设置/p“文件名=打印:”
如果定义的文件名设置为“filelist=%filelist%,“%filename%”,则转到下一个文件(&G)
如果未定义文件列表,则不回显指定的文件(&GOTO:EOF)
:打印它们
对于(%filelist%)中的%%f,请执行以下操作(
如果存在“%%~f”(notepad.exe/P“%%~f”
)否则(
如果存在“%%~f.txt”(notepad.exe/P“%%~f.txt”
)否则(
未找到回显“%%~f”
)
)
)
后藤:EOF
第一件事:从命令行加载filelist
,因此执行printfiles abc,def,ghi,yellow.txt将abc,def,ghi,yellow.txt
分配给filelist
。如果没有提供参数,则不向文件列表
分配任何内容
如果定义了文件列表
(即,包含一个表示提供了命令行参数的值),则转到标签打印它们
否则,清除屏幕并按ENTER键开始打印消息
然后将filename
设置为nothing(因为使用简单的Enter键set/p
将保持值不变),并使用Print:
提示输入。键盘输入将被放入文件名
如果有(假定为文件名)条目,则将文件名“
累积到文件列表
的末尾,并在逗号后重复请求文件名
当使用简单输入时,文件名
将为空,因此未定义,因此我们继续执行:如果文件列表
不为空,则打印它们
从那里,我们只需将文件列表
作为逗号分隔的一系列
文件名转换为%%f
。如果输入的文件名存在,请使用记事本打印,如果不存在,请尝试在名称后面附加.txt
,即使失败,也会显示错误消息
%%f
从%%f
中的项目中删除引号。然后将其重新引用,以便打印包含空格的文件名。存在语法问题:如果“%PrinterFile%”==”(
(注意附加的引号和移动的空格)由于某些原因,它仍然只是退出,并且从来没有将文本文件实际输出到记事本中。是的,因为您的第一行;我只是想指出一个语法错误,但没有提供解决方案;您正在寻找的是“命令行参数”——请参阅命令(在命令提示窗口中键入call/?
并阅读帮助)…是的,我是这么想的。我正在尝试允许用户输入多个文本文件(最多5个)在命令提示符内的一行上,然后尝试在记事本内打印这些文件。这是应该单独工作还是我应该保留我的第一行?您所需要的只是我发布的内容。如果您确实希望完成提示和接受循环,那么很容易安排。如果您有时间,可以解释每一行吗?
printfiles abc,def,ghi,yellow.txt