[英]Batch for loop using wmic
下面的输出
wmic logicaldisk get providername /value
在我使用的计算机上使用cmd(具有有限的用户权限)是:
ProviderName=
ProviderName=
ProviderName=\\xxx-SN-NA01\Users2\N\ni
ProviderName=\\xxx-sn-na01\Software_Ca
ProviderName=\\xxx-sn-na01\TSO
我正在尝试访问存储在名为%drives_paths_wmic%的变量中的以下内容:
\\xxx-SN-NA01\Users2\N\ni \\xxx-sn-na01\Software_Ca \\xxx-sn-na01\TSO
然后将其内容传送到变量%file%中。
我当前拥有的批处理代码为:
@echo off
setlocal enabledelayedexpansion
for /F "tokens=2 delims='='" %%A in ('wmic logicaldisk get providername /value') do (
echo %%A >> %drive_paths_Wmic%
)
echo %drive_paths_Wmic%
echo %drive_paths_Wmic% >> %file%
编辑:问题是%drive_paths_Wmic%变量中没有存储任何内容。
由于该批处理文件需要在Windows 7和XP计算机上运行,因此无法使用PowerShell。 请建议更改批代码以执行此操作?
您没有指定问题。 然而:
'1'。 delims==
语法
for /F "tokens=2 delims==" %%A in ('wmic logicaldisk get providername /value') do @echo %%A
以上命令的输出正确吗? 我不敢说,因为
'2'。 wmic的所有输出都是Unicode。 要转换为ASCII,请尝试下一个代码段:
wmic logicaldisk get providername /value >somename.txt
for /F "tokens=2 delims==" %%A in ('type somename.txt') do @echo %%A
'3'。 结果转换为变量:
set "file="
rem variable initialized now
rem ... some code ...
for /F "tokens=2 delims==" %%A in ('type somename.txt') do set file=!file! %%A
rem ... some code ...
echo !file!
echo %file%
或也可以将其set "file=!file! %%A"
完成批次:
@ECHO OFF >NUL
@SETLOCAL enableextensions enabledelayedexpansion
set "drive_paths_Wmic="
rem variable initialized now
rem ... some code ...
wmic logicaldisk get providername /value >somename.txt
for /F "tokens=2 delims==" %%A in ('type somename.txt') do (
set drive_paths_Wmic=!drive_paths_Wmic! %%A
@rem ... some code ...
)
echo !drive_paths_Wmic!
echo %drive_paths_Wmic%
Endlocal
goto :eof
输出(在我的计算机上):
C:\bat>fivmic
\\pc1870a\ttemp \\PC1870A\Install
\\pc1870a\ttemp \\PC1870A\Install
输出( echo ON
部分)
C:\bat>fivmic
C:\bat>wmic logicaldisk get providername /value 1>somename.txt
C:\bat>for /F "tokens=2 delims==" %A in ('type somename.txt') do set drive_paths_Wmic=!drive_paths_Wmic! %A
C:\bat>set drive_paths_Wmic=!drive_paths_Wmic! \\pc1870a\ttemp
C:\bat>set drive_paths_Wmic=!drive_paths_Wmic! \\PC1870A\Install
C:\bat>rem ... some code ...
C:\bat>echo !drive_paths_Wmic!
\\pc1870a\ttemp \\PC1870A\Install
C:\bat>echo \\pc1870a\ttemp \\PC1870A\Install
\\pc1870a\ttemp \\PC1870A\Install
如果%file%
变量包含有效的文件名,那么你可以回声重定向到该文件,如echo bubu >> anyname.txt
文本追加布布 (在新行)到文件anyname.txt
。 在脚本中:
set file="anyname.txt"
echo %drive_paths_Wmic% >> %file%
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.