【问题标题】:Variable in For used for path in Batch fileFor 中的变量用于批处理文件中的路径
【发布时间】:2015-05-22 19:48:15
【问题描述】:

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

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

【问题讨论】:

    标签: batch-file printing


    【解决方案1】:
    ....
    for /f "tokens=* USEBACKQ" %%1 in (`wmic printer get name`) do (
        for /f "delims=" %%a in ("%%1") do set "str=%%a"
        ....
    

    wmic 命令的输出包含一个额外的回车符,它会产生错误。附加的for 将在将值分配给变量之前将其删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      相关资源
      最近更新 更多