@ECHO OFF
setlocal enabledelayedexpansion
for /f "tokens=*" %%f in ('Cscript %WINDIR%\\System32\\Printing_Admin_Scripts\\en-US\\Prnmngr.vbs -l -s myserver1.com') do (
echo %%f
)
pause输出情况如下:
Server name myserver1.com
Printer name myprinter1
Share name myprinter1
Driver name SHARP UD2 PCL6
Port name myprinter1.com
Comment
Location
Print processor winprint
Data type RAW
Parameters
Attributes 584
Priority 1
Default priority 0
Average pages per minute 0
Printer status Idle
Extended printer status Unknown
Detected error state Unknown
Extended detected error state Unknown等等,为100打印机
在csv文件中预期的输出是服务器名、打印机名称共享名、驱动程序名称、端口名E 211如下所示:
myserver1.com,myprinter1,myprinter1,SHARP UD2 PCL6,myprinter1.com
myserver2.com,myprinter2,myprinter2,hp PCL6,myprinter2.com
myserver3.com,myprinter3,myprinter3,hp universal PCL5,myprinter3.com请建议
发布于 2018-01-03 13:13:53
@ECHO OFF
setlocal enabledelayedexpansion
CALL :zapvars
:: for /f "tokens=*" %%f in ('Cscript %WINDIR%\\System32\\Printing_Admin_Scripts\\en-US\\Prnmngr.vbs -l -s myserver1.com') do (
for /f "tokens=*" %%f in (q48077575.txt) do (
FOR /f "tokens=1,2*delims= " %%a IN ("%%f") DO IF "%%a"=="Comment" (
CALL :report
) ELSE IF "%%b"=="name" SET "%%a=%%c"
)
)
GOTO :EOF
:: report - use drop-through to zap variables used
:report
ECHO %server%,%printer%,%share%,%driver%,%port%
:: clear variables used
:zapvars
FOR %%z IN (server printer share driver port) DO SET "%%z="
GOTO :eof我在测试中使用了一个名为q48077575.txt的文件,其中包含了您的数据,并辅之以一些类似的数据。
注意,最初对zapvars的调用是为了清除使用的变量。
您已经将每行内容读给%%f了。使用空格分隔符将每一行的%a、%b、%c标记设置为%a、%b、%c,如果第一个标记是而不是 Comment,则查看第二个标记是否为name,并将名为%%a的变量设置为name、%%c之后行其余部分的值。
当第一个令牌是 Comment时,然后输出已检测到的名称,并清除为下一个数据块准备的变量。
https://stackoverflow.com/questions/48077575
复制相似问题