我有一个脚本,可以列出一个文件夹下的所有文件及其子属性,如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环境中。
您可以使用带/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的家伙无疑将能够帮助你更好地处理这些问题。