Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 使用wmic的循环批处理_Variables_Batch File_For Loop_Cmd_Wmic - Fatal编程技术网

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%