繁体   English   中英

使用WMIC批处理循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM