批量取得盛大母公司的WMIC
最终能够将以下工作放在一起,但有一个额外的路线。批量取得盛大母公司的WMIC
For /f "tokens=1,2 skip=1 delims=\" %%i IN (
'WMIC service WHERE "name LIKE 'tomcat%%'" GET PathName'
) DO (
echo %%i\%%j
)
Pause
运行时,我们看到:
- d:\ tomcat的
- d:\ tomcat2
- \
和\是不正确的。
围绕另一个for /F
环裹摆脱Unicode到ANSI文本转换人为因素(如孤儿回车字符)留下的for /F
:
for /F "skip=1 delims=" %%a in ('
wmic Service where "Name LIKE 'tomcat%%'" get PathName
') do (
for /F "tokens=1,2 delims=\" %%i in ("%%a") do (
echo %%i\%%j
)
)
外环读取除了你想要跳过的行之外的完整行;内部的人解析文本。
我喜欢这个答案最好,因为它涵盖了需要什么,如果我们玩脚本高尔夫,我认为这是赢家!我很欣赏这个问题的所有投入。 – Leptonator
如果您想批量执行此操作,则可以使用此语法。这只是给你父母和祖父母文件夹。如果您需要完整的路径,请将dp
修饰符添加到FOR变量中。
@echo off
For /f "skip=1 delims=" %%G IN ('WMIC service WHERE "name LIKE 'wdpostman'" GET PathName ^|findstr /r /V "^$"') DO (
for %%H in ("%%~dpG\.") do set "parent=%%~nxH"
for %%H in ("%%~dpG\..") do set "gparent=%%~nxH"
)
echo parent=%parent%
echo gparent=%gparent%
只是想添加这组额外的代码,告诉你如何将文件夹路径分解成变量。
@echo off
setlocal enabledelayedexpansion
For /f "skip=1 delims=" %%G IN ('WMIC service WHERE "name LIKE 'wdpostman'" GET PathName ^|findstr /r /V "^$"') DO (
set "_fpath=%%~dpG"
)
set "_fpath=%_fpath:~0,-1%"
set i=1
set "_spath!i!=%_fpath:\=" & set /A i+=1 & set "_spath!i!=%"
echo There %i% Folder(s^)
set _spath
Pause
我收到以下内容:'批处理参数 替换中的路径运算符的以下用法无效:%〜dpG \ ..' – Leptonator
对不起。我错过了两倍的%。 – Squashman
不完全..我只是指着:http://stackoverflow.com/questions/15685816/how-can-i-remove-empty-lines-from-wmic-output从我的一个同事..发布现在的解决方案。 – Leptonator
我的一个在我的同事向我指出:
How can I remove empty lines from wmic output? - 更具体地说:https://stackoverflow.com/a/15686239/175063
For /f "tokens=1,2 skip=1 delims=\" %%i IN (
'WMIC service WHERE "name LIKE 'tomcat%%'" GET PathName ^| findstr /r /v "^$"'
) DO (
echo %%i\%%j
)
Pause
我知道这是不是因为@ Squashman的解决方案为优雅,但这种是我正在寻找或至少类似。
所以真的这应该被标记为重复的问题? – Squashman
这是我的经验,PathName实际返回其他行。当我说我的意思是在WMIC命令通常的“奇怪”输出之上。为了确保你的输出不受影响,我会使用Call
来解决它。
@Echo Off
For /F "Skip=1 Delims=" %%A In (
'"WMIC Service Where (Name Like 'tomcat%%') Get PathName"'
) Do Call :Sub %%A
Timeout -1
GoTo :EOF
:Sub
If Not "%~1"=="" Echo(%*
我会推荐PowerShell而不是批处理(一行):'gwmi Win32_Service -Filter“Name LIKE'tomcat%'”| %{$ _ PathName}' –