Windows批处理:将包含名称,路径,已修改数据,创建日期和所有者的所有文件列入csv文件或txt文件

时间:2017-03-01 17:52:32

标签: batch-file

我有一个可以显示文件路径的脚本,有些属性无法显示,例如修改日期,创建日期,所有者。

@ECHO off
SET v1=%%~dpF
SET v2=%%~nxF
(for /r %%F in (*) do @echo "%v1%","%v2%"
pause


Example Output :
- D:/newfolder1/tester.doc | 18/02/2016 01:30:00 | 16/02/2016 02:13:12 | Nickolas
- D:/newfolder2/tester2.doc | 11/03/2016 01:30:00 | 12/02/2016 02:13:12 | Marx Timberlack
- D:/newfolder3/tester3.doc | 18/02/2016 01:30:00 | 16/02/2016 02:13:12 | Administrators

基本上我想添加第4个参数,它应该显示文件所有者。它在Windows 7环境中。

2 个答案:

答案 0 :(得分:1)

正如Klitos Kyriacou的评论中提到的,PowerShell可以做到这一点:

PARAM (
    $Path = 'C:\Users\MarxHood\Desktop\', $Report = 'C:\Users\MarxHood\Output.csv'
)

$Owner = @{
    Name = 'FileOwner'
    Expression = { ((Get-Acl $_.FullName).Owner).Split('\')[1] }
}

Get-ChildItem -Path $Path -Recurse | Select FullName, LastWriteTime, CreationTime, $Owner | Export-Csv -NoTypeInformation -Delimiter "|" $Report

只需根据需要更改位于顶部的$Path$Report的位置。

修改

下面是使用批处理文件的方法,遗憾的是这取决于本地化的日期/时间输出; (令牌可能需要调整以适合您的语言环境)。所有者输出字符串中包含空格的域名也会导致失败。

@Echo Off

Set "Path=C:\Users\MarxHood\Desktop"
Set "Report=C:\Users\MarxHood\Output.csv"

(For /F "EOL= Tokens=1,2,4*" %%A In ('Dir/A-D/-C/Q/TC "%Path%\*"'
) Do For /F "Delims=" %%E In ("%%~tD"
) Do Echo="%%~fD"^|"%%E"^|"%%A %%B"^|"%%~nC")>"%Report%"

请务必根据需要更改顶部附近%Path%%Report%的位置。

答案 1 :(得分:0)

使用命令dir /TC将显示每个文件的创建日期。 /TA会向您显示上次访问权限,/TW将显示最后一次访问权限。