首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prnmngr.vbs -解析并格式化来自windows批处理文件的csv输出?

prnmngr.vbs -解析并格式化来自windows批处理文件的csv输出?
EN

Stack Overflow用户
提问于 2018-01-03 12:37:37
回答 1查看 337关注 0票数 0
代码语言:javascript
复制
@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

输出情况如下:

代码语言:javascript
复制
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如下所示:

代码语言:javascript
复制
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

请建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-03 13:13:53

代码语言:javascript
复制
@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时,然后输出已检测到的名称,并清除为下一个数据块准备的变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48077575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档