我有一个脚本可以列出文件夹及其子表单下的所有文件,其中包含一些属性,如路径,文件名,修改日期和大小。但是,我无法添加一个额外的属性,文件所有者。
@ECHO off
SET v1=%%~dpF
SET v2=%%~nxF
SET v3=%%~zF
(for /r %%F in (*) do @echo "%v1%","%v2%",%v3%) > test.csv
PAUSE
基本上我想添加第4个参数,它应该显示文件所有者。它在Windows 7环境中。
答案 0 :(得分:2)
您可以将dir
命令与/q
开关一起使用,以包含每个文件的所有者。
@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
答案 1 :(得分:0)
不完全是你要求的,但我改编了一个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
此脚本改编自信息found here。我发现批处理文件在处理这些天时遇到的麻烦越来越多,而且PowerShell非常灵活。 serverfault.com以上的那些人无疑能够更好地帮助你解决这些问题。