我正在尝试将此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%
答案 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
循环正在跳过错误输出:)