Windows Management Instrumentation命令行WMIC以批量提取属性

时间:2016-04-26 08:40:56

标签: windows batch-file command-line scripting wmic

我有一个问题。

我想从不同的PC中提取 - 从总是相同的路径(比方说D:\ Data或D :) - 来自扩展名为* .raw的文件的一些属性。

我想将一个txt或csv文件保存到另一个文件夹(比如网络文件夹K:\ Results),其中包含* raw文件的名称及其属性。

我主要感兴趣的是" Created"," Last Modified"," Last Accessed"。

我刚刚发现了WMIC命令,我想使用它,但我真的不知道如何编写一个可以从以下PC运行的脚本:

1 - 它获取*.raw

中的D:\个文件列表

2 - 它从所有这些中提取Caption,CreationDate,LastModified ...

3 - 它在K:\Results\

中保存了具有特定名称的列表

有人可以帮助我吗?

我正在尝试了解有关此Windows Management Instrumentation命令行的更多信息,但我仍然在:

wmic datafile where (drive="C:" and path="\\temp\\") get Caption,CreationDate,LastModified

我解决问题可能需要很长时间。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

假设您的*.raw文件夹中有一些c:\temp个文件,那么

您可以这样尝试:

@echo off
Set Output=Result.txt
Set Ext=raw
If Exist %OutPut% Del %OutPut%
setlocal enabledelayedexpansion
for /f "Skip=2 tokens=2-4 delims=," %%a in ('wmic datafile where (drive^="C:" and path^="\\temp\\" AND Extension^="%Ext%"^) get Caption^,CreationDate^,LastModified /format:csv') Do (
    set "file=%%a" 
    set "CreationDate=%%b"
    set "LastModified=%%c"
    (
        echo "!file!"
        echo CreationDate :
        Call:ConvertDate !CreationDate!  
        echo LastModified :
        Call:ConvertDate !LastModified!
        echo ***************************
    )>>%OutPut%
)
EndLocal
if Exist %OutPut% Start "" %OutPut%
Exit /b
::**********************************************************************
Rem Function for Converting WMI Dates to a Standard Date-Time Format
:ConvertDate <Date>
(
    echo WScript.echo WMIDateStringToDate("%~1"^)
    echo Function WMIDateStringToDate(Mydate^)
    echo  WMIDateStringToDate = CDate(Mid(Mydate, 5, 2^) ^& "/" ^& _
    echo  Mid(Mydate, 7, 2^) ^& "/" ^& Left(Mydate, 4^) _
    echo  ^& " " ^& Mid (Mydate, 9, 2^) ^& ":" ^& _
    echo  Mid(Mydate, 11, 2^) ^& ":" ^& Mid(Mydate,13, 2^)^)
    echo End Function
)>"%~n0.vbs"
cscript /nologo "%~n0.vbs" "%~1"
Del "%~n0.vbs"
exit /b
::**********************************************************************