我正在尝试创建一个简单的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文件。
答案 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