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

Batch file 中的变量用于批处理文件中的路径,batch-file,printing,Batch File,Printing,我似乎不明白为什么这不起作用。我试图收集机器上所有打印机的列表,然后让脚本为每个打印机创建一个文件,并将主机名附加到该文件中。我计划在每台计算机上运行此程序,以便我们知道,对于我们正在设置的新windows打印服务器,每个打印组中需要哪些计算机 守则: setlocal EnableDelayedExpansion net use z: PATH TO SHARE HERE (this part works) for /f "tokens=* USEBACKQ" %%1 in (`wmic pr

我似乎不明白为什么这不起作用。我试图收集机器上所有打印机的列表,然后让脚本为每个打印机创建一个文件,并将主机名附加到该文件中。我计划在每台计算机上运行此程序,以便我们知道,对于我们正在设置的新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”应该是文件名,却给出了无效的语法

我完全不知道这为什么行不通:(

。。。。
对于(`wmic printer get name`)中的/f“tokens=*USEBACKQ”%%1,请执行以下操作(
对于/f“delims=”(“%1”)中的%%a,请设置“str=%%a”
....
wmic
命令的输出包括一个生成错误的传统回车字符。附加的
for
将在将值分配给变量之前删除该字符