我有一个脚本,可以列出一个文件夹下的所有文件及其子属性,如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环境中。
batch file/ Powershell – 枚举文件夹中的文件
将上下文菜单添加到Windows资源pipe理器以运行BAT文件
在Windowsbatch file中编译CLAsspATH
删除char和CR / LF
来自Waifu2x-caffe的Windows控制台输出无法理解
您可以使用带/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","%%b" )) > test.csv
不完全是你所要求的,但我调整了一个PowerScript来显示你所要求的。 只需使用文件和文件夹名称更新ParaM部分,复制并粘贴到PowerShell中,然后按两次输入:
ParaM ( $Path = 'C:UsersPATHHERE',$report = 'C:UsersUSERNAMEDesktopOUTPUTFILENAMEHERE.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 -NoType@R_655_4045@ion $Report
这个脚本改编自这里的信息。 我发现批处理文件这些日子处理起来越来越麻烦,而且PowerShell非常灵活。 在serverfault.com的家伙无疑将能够帮助你更好地处理这些问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。