0

我正在尝试获取 WMIC 命令的输出以将变量分配给每一行。

我试图让输出看起来像这样:

1 个安装的第一个程序

安装了 2 秒的程序

3 第三个程序安装

4第四个程序安装

5 ...等

@Echo off

wmic /output:file.txt product get name /format:csv

rem wmic product get name

@Echo Off
SetLocal EnableDelayedExpansion
Set n=

Set _InputFile=c:\users\jorge\desktop\file.txt
For /F "tokens=*" %%I IN (%_InputFile%) DO (
Set /a n+=1
Set _var!n!=%%I
)
:: This line will display the variables just assigned
:: For testing only, delete when not needed
Set _
EndLocal

pause
4

1 回答 1

0

这是行不通的,因为 wmic 会为您提供 /f 无法读取的 Unicode 文件(请参阅此处)。解决方法是使用 ('type file') 代替:

@Echo off

:: not really need a csv here...
wmic /output:file.txt product get name /format:table

Set n=0
:: Suggest to use internal call :label rather than delayed expansion
For /F "tokens=* skip=1 delims=" %%I IN ('type file.txt') DO @call :Assign %%I
Set _
pause
goto :EOF

    :Assign
    Set /a n+=1
    Set _var%n% = %*
    goto :EOF
于 2012-07-14T22:43:44.513 回答