Variables 使用wmic的循环批处理
下面的输出Variables 使用wmic的循环批处理,variables,batch-file,for-loop,cmd,wmic,Variables,Batch File,For Loop,Cmd,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\u paths\u
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\u paths\u 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\u paths\u 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%
或者也可以是设置“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
输出(在我的计算机上):
输出(零件上有回声
)
如果%file%
变量包含有效的文件名,则可以将echo重定向到该文件,例如echo bubu>>anyname.txt
在文件anyname.txt
中追加文本bubu(在新行上)。在脚本中:
set file="anyname.txt"
echo %drive_paths_Wmic% >> %file%
好的,我已经编辑了这个问题以包含这个问题。我将尝试这些建议,并让您知道结果。我现在已经在“完整批处理”中使用了您的代码。“somename.txt”文件将被创建并填充,但是当尝试运行for/f时程序将退出。。。环线。如何更改此设置?请尝试
将ECHO设置为ON
。错误消息?最后回显的是哪一行?当@echo打开时
回显的最后一行是:wmic logicaldisk get providername/value>somename.txt
cmd窗口中没有错误消息。请更新您的问题并将关键代码段粘贴到此处
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
set file="anyname.txt"
echo %drive_paths_Wmic% >> %file%