서비스 목록(DisplayName,State,StartMode)을 쿼리하는 배치 파일을 갖고 싶지만 txt 파일에서 볼 때 보기 좋은 형식으로 출력되도록 하고 싶습니다.
여기에 .csv 파일로 덤프해야 하는 내용이 있지만 다른 정보가 포함되어 있고 Excel을 사용할 수 없는 txt 파일에 저장하고 싶습니다(일반적으로 메모장을 사용하여 이 파일을 열고 보관하고 싶습니다). 이 방법).
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service WHERE DisplayName LIKE 'CommVault%'")
wscript.echo chr(34) & "Service Name" & chr(34) & "," & chr(34) & "Status" & chr(34) & "," & chr(34) & "Start Mode" & chr(34)
For Each objService in colListOfServices
wscript.echo chr(34) & objService.DisplayName & chr(34) & "," & chr(34) & objService.State & chr(34) & "," & chr(34) & objService.StartMode & chr(34)
Next
답변1
이렇게 하면 멋진 형식의 텍스트 테이블이 제공됩니다.
wmic /output:Services.txt service where "DisplayName like 'CommVault%'" get DisplayName,State,StartMode
Windows\System32\wbem
또한 및 Windows\System32\wbem\en-US
(또는 Windows에서 사용하는 언어 코드)의 다양한 XSL 파일을 사용하여 형식을 지정할 수도 있습니다.wmic다양한 방법으로 출력합니다.
예를 들어, 다음은 멋진 형식의 HTML 테이블을 제공합니다.
wmic /output:Services.htm service where "DisplayName like 'CommVault%'" get DisplayName,State,StartMode /format:"%windir%\System32\wbem\en-US\htable.xsl"
어떤 이유로 VBScript를 사용해야 하는 경우 간단히 수정하면 됩니다.wscript.echo명령문을 원하는 형식으로 출력한 다음 텍스트 파일로 리디렉션하거나 스크립트 자체를 텍스트 파일에 직접 쓰도록 만드는 것이 더 좋습니다.
답변2
이것을 MyServiceViewer.hta라고 부르세요.
<html>
<head>
<style>
BODY {font-size :100%;font-family: Arial, Helvetica, sans-serif;color: black;
background:URL(images/watermark.gif);background-color: white;
margin-top:0; margin-left:0pt; margin-right:0pt ; text-align:Justify}
P {margin-left:40pt;margin-right:10pt}
TABLE {font-size: 90%; text-align:left; margin-left:40pt;margin-right:10pt;background-color:lavender;width:90%}
THEAD {color: white;font-weight:bold;background-color:darkblue; margin-left:40pt;margin-right:10pt}
TD {Vertical-Align:Top;padding:3px}
</style>
</head>
<body>
<OBJECT CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"
ID=dsoMacro5 WIDTH=0 HEIGHT=0>
<PARAM NAME="DataURL" VALUE="Services.txt">
<PARAM NAME="UseHeader" Value="True">
<PARAM NAME="FieldDelim" VALUE=",">
<PARAM NAME="Sort" Value="Service Name">
</OBJECT>
<h3>My Services Database</h3>
<h4>Select a button to filter list</h4>
<p>To search for a word in the Title field use <i>* word *</i>. To search for the first word in a field use <i>Word *</i> or the last word use <i>* word</i>. To search for a string within a word or word use <i>*partialword*</i>. Searches are case sensitive.</i></p>
<p><INPUT Name=tb1 TYPE=Text Value=""> <INPUT ID=cmdNavFirst TYPE=BUTTON VALUE=" Search " onclick="dsoMacro5.object.filter='Service Name=' + tb1.value;dsoMacro5.reset()"></p>
<p><INPUT ID=cmdNavFirst TYPE=BUTTON VALUE=" Sort Status " onclick="dsoMacro5.object.sort='Status';dsoMacro5.reset()"></p>
<hr class="body">
<TABLE ID=tblMacro2 DATASRC=#dsoMacro5 OnRowEnter=Alert(tblMacro2.row)>
<THEAD>
<TR>
<TD WIDTH="60%"><b>Service Name</b></TD>
<TD WIDTH="20%"><b>Status</b></TD>
<TD WIDTH="20%"><b>Start Mode</b></TD>
</TR>
</THEAD>
<TBODY>
<TR>
<TD WIDTH="20%"><SPAN DATAFLD="Service Name"></SPAN></TD>
<TD WIDTH="60%"><SPAN DATAFLD="Status"></SPAN></TD>
<TD WIDTH="20%"><SPAN DATAFLD="Start Mode"></SPAN></TD>
</TR>
</TBODY>
</TABLE>
</body>
</html>
그리고 이 파일을 services.txt라고 부르세요.
Service Name,Status,Start Mode
Workstation,Ok,Manual
Workstation,Ok,Manual
Workstation,Ok,Manual
Workstation,Ok,Manual
Server,Ok,Manual
Server,Ok,Manual
Server,Ok,Manual
Server,Ok,Manual
BFE,Ok,Auto
BFE,Ok,Auto
BFE,Ok,Auto
특정 질문에 대해서는 가변 폭 글꼴, vbs + 메모장에서는 작동하지 않습니다. 메모장에서 고정폭 글꼴로 바꾸면...
20개의 고정 너비 문자를 채우려면
A="Running"
MsgBox A & Space(20 - Len(A)) & "|end of marker so you can see spaces in msgbox"
열 사이에 탭을 놓는 것만으로도 데이터 길이가 동일하거나 거의 같은 경우 95%, 100% 작동하는 경우가 많습니다. 뷰어(메모장은 아님)에서 표준 탭보다 크게 설정하면 이 작업을 수행할 수 있습니다. 저는 보통 Word를 사용하지만 32비트 창을 사용하는 경우 편집에서 사용자 정의 탭 너비를 가질 수 있습니다.