我似乎无法弄清楚为什么这不起作用。我正在尝试收集计算机上所有打印机的列表,然后让脚本为每台打印机创建一个文件,并将主机名附加到该文件。我计划在每台计算机上运行此操作,以便我们知道在我们正在设置的新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"当它应该是文件名时给出无效的语法。
我完全不知道为什么这不起作用:(
答案 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
会在将值赋给变量之前删除它。