我有一个问题。
我想从不同的 PC 中提取 - 从始终相同的路径(比如 D:\Data 或 D:) - 从扩展名为 *.raw 的文件中提取一些属性。
我想将一个 txt 或 csv 文件保存到另一个文件夹(比如网络文件夹 K:\Results),其中包含 *raw 文件的名称及其属性。
我主要对“创建”、“上次修改”、“上次访问”感兴趣。
我刚刚发现了 WMIC 命令,我想使用它,但我真的不知道如何编写一个我可以从 PC 上运行的脚本:
1 – 它获取 D:\
*.raw
文件列表
2 – 它从所有这些中提取 Caption,CreationDate,LastModified
...
3 – 它在 K:\Results\
有人可以帮助我吗?
我正在尝试了解有关此 Windows Management Instrumentation 命令行的更多信息,但我仍在:
wmic datafile where (drive="C:" and path="\\temp\\") get Caption,CreationDate,LastModified
我可能需要很长时间才能解决我的问题。
提前谢谢你。
最佳答案
假设您的 c:\temp
文件夹中有一些 *.raw
文件,所以
你可以这样试试:
@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
::**********************************************************************
关于Windows Management Instrumentation 命令行 WMIC 批量提取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36859654/