批处理文件get命令的输出存储在变量中

时间:2014-05-21 07:37:53

标签: batch-file wmic

我正在尝试将此WMIC输出存储到变量中。当我回声VAL我什么都没得到! 我想要实现的是获取文件的最后修改日期。这个WMIC命令的问题是它返回一个长号的日期,我想操纵该输出

这是我的脚本中我遇到此问题的部分

:: these lines are at the top of the script

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

...
...
...
...

:: a function:

set COMM="WMIC DataFile WHERE Name='C:\\Program Files (x86)\\folder\\folder\\folder\\container.npp' Get InstallDate"

set VAL=1

for /f "skip=1" %%A in ('%COMM%') do (set VAL=%%A)
echo %VAL%

2 个答案:

答案 0 :(得分:4)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "file=c:\\Program Files (x86)\\Internet Explorer\\iexplore.exe"
    for /f %%a in (
        'wmic DataFile where "Name='%file%'" get InstallDate ^| find "+" '
    ) do set "val=%%a"

    echo [%val%]

所有问题都是正确引用字符串。对于wmic,包含文件名称的字符串需要包含单引号,并且对于for没有问题,where条件是双引号括起来的。

答案 1 :(得分:0)

尝试删除set COMM=语句中的引号,因为紧密括号)位于wmic命令中,您无法转义,只需写入临时文件并将其重新读入,如这样:

:: these lines are at the top of the script

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

...
...
...
...

:: a function:

set COMM=WMIC DataFile WHERE Name='C:\\Program Files (x86)\\folder\\folder\\folder\\container.npp' Get InstallDate 
%COMM% > "%temp%\installdate.trace"
set VAL=1

for /f "skip=1" %%A in ('type "%temp%\installdate.trace"') do (set VAL=%%A)
echo %VAL%
del /q "%temp%\installdate.trace"

您没有看到错误的原因是因为您的for /f循环正在跳过错误输出:)