变量用于批处理文件中的路径

时间:2015-05-22 19:48:15

标签: batch-file printing

我似乎无法弄清楚为什么这不起作用。我正在尝试收集计算机上所有打印机的列表,然后让脚本为每台打印机创建一个文件,并将主机名附加到该文件。我计划在每台计算机上运行此操作,以便我们知道在我们正在设置的新Windows打印服务器的每个打印组中需要哪些计算机。

守则:

setlocal EnableDelayedExpansion
net use z: PATH TO SHARE HERE (this part works)
for /f "tokens=* USEBACKQ" %%1 in (`wmic printer get name`) do (
set str=''
echo %str%
set str=%%1
set str=!str:\==!
set str=!str: =!
echo !str!
echo "!str!.txt" >> test6.txt
hostname
hostname >> "!str!.txt"
)

两行

set str=!str:\==!
set str=!str: =!

是剥离空间,并在开头取代\ 打印机名称,因此它将是一个有效的文件路径。这些似乎按预期工作。

第一次循环运行的输出(其余的跟随其他打印机名称并具有相同的行为)

ECHO开启。
WebExDocumentLoader
WW7L7NPWWZ1
文件名,目录名或卷标语法不正确。

回声是为了空!str的回声!可变
下一行是变量
中的打印机名称 该变量行的文件test6.txt的输出是:" WebExDocumentLoader.txt"
主机名行按预期输出。

最后一行让我发疯,因为我无法弄清楚为什么" WebExDocumentLoader.txt"当它应该是文件名时给出无效的语法。

我完全不知道为什么这不起作用:(

1 个答案:

答案 0 :(得分:0)

....
for /f "tokens=* USEBACKQ" %%1 in (`wmic printer get name`) do (
    for /f "delims=" %%a in ("%%1") do set "str=%%a"
    ....

wmic命令的输出包括生成错误的aditional回车符。额外的for会在将值赋给变量之前删除它。