批量编辑打印机列表

时间:2017-05-12 18:23:07

标签: batch-file printing line

我正在尝试从远程PC获取打印机列表(甚至可能是其使用的IP或端口),打印到文本文件并删除空行和“name =”,因此它只是一个列表。最后,我将使用此列表创建一个重新映像列表以及它已经获取的Ipconfig信息。我现在得到它,它在本地机器上运行。

PrinterList.bat

@echo off
wmic printer get name /value > print.txt
for /f %%a in (print.txt) do (
echo %%a
)

rem findstr /v /r /c:"^$" /c:"^\ *$" "print.txt" >> "print.txt"
rem findstr /v /r /c:"^$" /c:"^\ *$" /c:"^\*$" "print.txt" >> "print.txt"
)
pause

注释掉的行已经尝试过来自网络的样本,根据特定的txt文件进行定制

print.txt的输出 - “<>”是一个没有空格的空行

<>
<>
Name=Send To OneNote 2016
<>
Name=WebEx Document Loader
<>
Name=Ricoh m306

print.txt的理想输出

Send To OneNote 2016
WebEx Document Loader
Ricoh m306

我正在努力寻找获得远程PC已安装程序的列表。

我还想编辑映射的drive.txt的结果,以便稍后根据输出重新映射 映射的驱动器本地存储到txt文件

:smd
net use >> .\userSettings\%computername%_%username%_map.txt
Goto :HOME

%computername%_%username%_ map.txt:

的输出
New connections will be remembered.
<>
<>
Status       Local     Remote                    Network
<>
----------------------------------------------------------------------------
OK           H:        \\abc.abcde.abcdef.edu\home_folders\username 
                                                Microsoft Windows Network
             S:        \\ab.abcdef.org\share   Microsoft Windows Network
OK           X:        \\sgdm-group\packages      Microsoft Windows Network
OK           Y:        \\sgdm-group\upload        Microsoft Windows Network
The command completed successfully.

我想把它归结为一个驱动器列表和要映射到它的信件,这样我就可以从每一行for /f %%a in (%computername%_%username%_map.txt) do (net use稍后重新映射它们

2 个答案:

答案 0 :(得分:0)

wmic输出需要特殊的解析来删除cr,cr,lf序列:

@Echo off
( for /f "tokens=2 delims==" %%A in (
    'wmic printer get name /value ^|find "Name"'
  ) Do for /f "Delims=" %%B in ("%%A") Do Echo %%B
)>"print.txt"

答案 1 :(得分:0)

除了LF和CR所需的特殊解析之外,通常还会在每个输出打印机名称项上填充不需要的空格。因此,在像您这样的简单结构化脚本中,我使用Call命令删除该填充。

@Echo Off
(Type Nul)>"print.txt"
For /F "Skip=1 Delims=" %%A In ('WMIC /Node:"RemotePC-Name" Printer Get Name'
) Do For /F "Delims=" %%B In ("%%A") Do Call :Sub %%B
GoTo :EOF

:Sub
(Echo=%*)>>"print.txt"

您会明显地将"RemotePC-Name"替换为&#34;名称&#34;或远程PC的IP地址。