我一直试图遍历Windows 2008(具有批处理脚本)上的给定目录树,一直到叶子,并列出所有者,最后修改日期和文件大小。例如,
C:\Folder1\Folder1a\File1.txt Adam 10/20/2017 1024 MB
C:\Folder1\Folder1a\File2.dat Peter 03/02/2018 2048 MB
C:\Folder1\Folder1b\File2a.dat John 06/21/2018 100 Bytes
C:\Folder2\Folder2a\Folder2aa\File2aa.zip Mary 15/08/2018 600 MB
到目前为止,我进行了搜索,只能挖掘以下内容(无法产生所需的输出)。我来自Unix,只有非常基本的Batch知识。谁能帮忙吗?也可以赢Powershell。
for /R %%f in (*) do dir /b /s /on /q “%%f”
答案 0 :(得分:0)
您不能在此处使用裸露格式/b
,因为这是您要实际显示的格式,其次,您不需要递归浏览每个文件,而是仍然对每个文件都执行dir,而只需执行以下操作即可:
for /f "delims=" %%a in ('dir /a-d /q /on ^| findstr /vi "bytes"') do echo %%a
要将输出重定向到文件:
for /f "delims=" %%a in ('dir /a-d /q /on ^| findstr /vi "bytes"') do echo %%a >> "D:\mypath\myfile.txt"
答案 1 :(得分:-1)
$list = @()
foreach ($f in (Get-ChildItem C:\YOUR\PATH\ -recurse))
{if ($f.length -gt 1gb)
{$list += New-Object PSObject -Property @{
Path = $f.FullName
Owner = (Get-Acl $f.FullName).Owner
'LastWrite' = $f.LastWriteTime
'LastAccess' = $f.LastAccessTime
'SizeMB' = "{0:N1}" -f ( $f.Length / 1mb )}
}
}
$list | sort path | export-csv -Path c:\your.csv -Delimiter ',' -NoTypeInformation