Windows批处理脚本:列出名称,path,大小和所有者到csv文件的所有文件

我有一个脚本,可以列出一个文件夹下的所有文件及其子属性,如path,文件名,修改date和大小等属性。 但是,我不能添加一个额外的属性,文件的所有者。

@ECHO off SET v1=%%~dpF SET v2=%%~nxF SET v3=%%~zF (for /r %%F in (*) do @echo "%v1%","%v2%",%v3%) > test.csv PAUSE 

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

Solutions Collecting From Web of "Windows批处理脚本:列出名称,path,大小和所有者到csv文件的所有文件"

您可以使用带/q开关的dir命令来包含每个文件的所有者。

 @ECHO OFF SetLocal EnableDelayedExpansion for /r %%a in (*) do for /f "tokens=5" %%b in ('dir /q "%%~fxa" ^| findstr "%%~nxa"') do ( echo "%%~dpa","%%~nxa","%%~za","%%b" ) >> test.csv 

这将总是附加到test.csv ,如果你想总是重新创建test.csv你可以把你的整个for循环放在括号中(就像你已经做的那样);

 @ECHO OFF SetLocal EnableDelayedExpansion (for /r %%a in (*) do for /f "tokens=5" %%b in ('dir /q "%%~fxa" ^| findstr "%%~nxa"') do ( echo "%%~dpa","%%~nxa","%%~za","%%b" )) > test.csv 

不完全是你所要求的,但我调整了一个PowerScript来显示你所要求的。 只需使用文件和文件夹名称更新PARAM部分,复制并粘贴到PowerShell中,然后按两次输入:

 PARAM ( $Path = 'C:\Users\PATHHERE\', $report = 'C:\Users\USERNAME\Desktop\OUTPUTFILENAMEHERE.csv' ) $LastWrite = @{ Name = 'Last Write Time' Expression = { $_.LastWriteTime.ToString('u') } } $Owner = @{ Name = 'File Owner' Expression = { (Get-Acl $_.FullName).Owner } } $HostName = @{ Name = 'Host Name' Expression = { $env:COMPUTERNAME } } Get-ChildItem -Recurse -Path $Path | select $HostName, $Owner, Name, Directory, $LastWrite, Length | Export-Csv -NoTypeInformation $Report 

这个脚本改编自这里的信息。 我发现批处理文件这些日子处理起来越来越麻烦,而且PowerShell非常灵活。 在serverfault.com的家伙无疑将能够帮助你更好地处理这些问题。