(显然需要帮助)。
我有这个工作:
wmic datafile where name="%sourcepathdoubleslashnoquotes%%FileName%" get lastmodified > tmpFile.txt
set /p myvar-a= < tmpFile.txt
type tmpFile.txt | findstr /v LastModified > tmpFile2.txt
set /p myvar-b= < tmpFile2.txt
del tmpFile.txt
del tmpFile2.txt
tmpFile.txt
有这个:
LastModified
20150429124836.260625-240
tmpFile2.txt
有这个:
20150429124836.260625-240
echo %myvar%
生成此内容: 20150429124836.260625-240
如何在不写入文件的情况下让wmic
命令获得“20150429124836.260625-240
”?
不知何故使用“skip 1
”?
(整个事情都在循环中 - 大量不必要的文件写入)
提前致谢
答案 0 :(得分:0)
这是一个工作代码段(name
已更改为常量值以提高可读性,也应与where "name='%sourcepathdoubleslashnoquotes%%FileName%'"
子句一起使用。)
for /F "tokens=2 delims==" %%G in (
'wmic datafile where "Name='d:\\temp\\virus.bat'" get LastModified/value'
) do for /F "tokens=*" %%x in ("%%G") do set "myvar=%%x"
for
循环
%%G
检索LastModified
值; %%x
删除返回值中的结尾回车(wmic
行为:每个输出行以0x0D0D0A
结尾,而不是公共0x0D0A
}),请参阅下面的示例。示例(从我的命令行窗口复制和粘贴):
==>for /F "tokens=2 delims==" %G in ('wmic datafile where "Name='d:\\temp\\virus
.bat'" get LastModified/value') do @echo "%G"
"20150512194153.372487+120
==>for /F "tokens=2 delims==" %G in ('wmic datafile where "Name='d:\\temp\\virus
.bat'" get LastModified/value') do @for /F "tokens=*" %x in ("%G") do @echo "%x"
"20150512194153.372487+120"
==>
答案 1 :(得分:0)
尤里卡!
这有效:
for / f&#34; skip = 2 tokens = 2 delims =,&#34; %% A in(&#39; wmic数据文件,其中&#34; name =&#39; D:\ DEVEL \ somefile.txt&#39;&#34; get lastmodified / format:csv&#39;)DO SET myvar = %% A 强>
这也有效(不需要skip = 2)也是路径和名称的替换变量:
for / f&#34; tokens = 2 delims =,&#34; %% A in(&#39; wmic数据文件,其中&#34; name =&#39;%sourcepathdoubleslashnoquotes %% FileName%&#39;&#34; get lastmodified / format:csv&#39;)DO SET myvar = %% A 强>
ECHO您修改的变量在此处:%myvar%
我的整个问题可能只是引用 - 密切注意下面的单引号和双引号 - 它的关键!此版本也使用逗号分隔,但它可以与&#34; =&#34;同样。
答案 2 :(得分:0)
感谢您输入JosefZ
我能够让这个工作:
for / F&#34;令牌= 2 delims ==&#34; %% G in(&#39; wmic datafile,其中&#34; Name =&#39;%sourcepathdoubleslashnoquotes %% FileName%&#39;&#34; get LastModified / value&#39;)do @echo %% G 强>
输出: 20150512153513.391860-240
还有:
(虽然我不确定它们在结果方面有何不同)
for / F&#34;令牌= 2 delims ==&#34; %% G in(&#39; wmic datafile,其中&#34; Name =&#39;%sourcepathdoubleslashnoquotes %% FileName%&#39;&#34; get LastModified / value&#39;)do @for / F& #34;令牌= *&#34; %% x in(&#34; %% G&#34;)执行@echo %% x
输出: 20150512153513.391860-240
ECHO您修改的变量在此处:%myvar%