打印具有完整文件名和路径的目录列表?

时间:2014-03-19 05:39:49

标签: shell batch-file cmd directory

我正在尝试创建一个简单的txt文件,如下所示,有两列 - 第一个是最后修改日期的日期,下一个是完整文件名(包括路径):

/dir > list.txt几乎完成了这项工作,但它按目录对所有文件进行分组,我试图将该目录与文件名和最后修改日期放在同一行。

我是否需要使用批处理脚本?还是CMD线?我正在使用Windows XP。

YYYY/MM/DD   C:/Directory1/Directory2/Directory3/filename.txt
YYYY/MM/DD   C:/Directory1/Directory2/Directory3/filename.txt
YYYY/MM/DD   C:/Directory1/Directory2/Directory3/filename.txt
YYYY/MM/DD   C:/Directory1/Directory2/Directory3/filename.txt
YYYY/MM/DD   C:/Directory1/Directory2/Directory3/filename.txt

这几乎也有效,但我无法获得最后修改日期:

dir /s /b > list.txt

注意 - 我将这个cmd或.bat文件放在父目录中并且我无法安装任何程序或软件(即python,perl等)解决方案必须是简单的CMD行或.bat文件。

3 个答案:

答案 0 :(得分:2)

for /f "delims=" %%a in ('dir/s/b/a-d') do echo %%~ta %%a

作为批处理行,如果您从提示符处运行,请将%%全程缩减为%

(嗯 - 这会给你日期和时间,然后是文件名 - 你真的只想要日期吗?)

@ECHO OFF
SETLOCAL
for /f "delims=" %%a in ('dir/s/b/a-d') do (
 FOR /f "tokens=1-3delims=/: " %%q IN ("%%~ta") DO echo %%s/%%r/%%q %%a
)

GOTO :EOF

产生您在我的系统上指定的yyyy / mm / dd格式,但我使用日期格式dd / mm / yyyy - 您还没有指定您的,所以细节可能有所不同

答案 1 :(得分:1)

由于您使用的是Windows XP,因此与CMDLine / Batch Script相比,使用Powershell获取所需的文件属性会更容易。使用CMD检索文件的上次修改日期有点麻烦。

试试这个:

$files=Get-ChildItem -recurse "full_path_to_test_directory"
for($i=0;$i -lt $files.Count;$i++) {
$f=$files.Get($i)
$fName=$f.FullName
$fModified=Get-Date $f.LastWriteTime -Format "yyyy\\MM\\dd"
$out="$($fModified)    $($fName)"
Add-Content -Path "full_path_to_destination_file" -Value $out

}

将其另存为 getFileProperties.ps1 并从Powershell控制台运行。

您还可以从 命令行 运行上述powershell脚本,如下所示:

powershell -File "full_path_to_above_powershell_script"

答案 2 :(得分:0)

我需要同样的事情。我想获取目录和所有子目录中所有文件的最后修改日期,并将其输出到文件,就像OP一样。 Magoo列出了它的内容,但缺少的是保存到文件。所以,这是从命令提示符很好地工作:

for /f "delims=" %a in ('dir/s/b/a-d') do echo %~ta %a >>c:\temp\filelist.txt