我正在尝试从远程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
稍后重新映射它们
答案 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地址。