Powershell 要在CMD提示符下检索文件中存在的文件名列表的修改日期吗

Powershell 要在CMD提示符下检索文件中存在的文件名列表的修改日期吗,powershell,batch-file,cmd,Powershell,Batch File,Cmd,我在一个名为My_text.txt的文件中有一个文件名列表,可能超过100个。我想检索修改的日期,基本上是所有这些文件名的DIR命令输出 My_Text.txt contains D:\Users\dsa99_p\Desktop\My_Program1.txt D:\Users\dsa99_p\Desktop\My_Program2.txt D:\Users\dsa99_p\Desktop\My_Program3.txt D:\Users\dsa99_p\Desktop\My_Program4.

我在一个名为My_text.txt的文件中有一个文件名列表,可能超过100个。我想检索修改的日期,基本上是所有这些文件名的DIR命令输出

My_Text.txt contains
D:\Users\dsa99_p\Desktop\My_Program1.txt
D:\Users\dsa99_p\Desktop\My_Program2.txt
D:\Users\dsa99_p\Desktop\My_Program3.txt
D:\Users\dsa99_p\Desktop\My_Program4.txt

and so on..
我想检索所有这些My_Program1、My_Program2、My_Program3、My_Program4文件的修改日期。怎么做?请帮忙


如果可以通过Powershell进行,请告诉我。

在Powershell中,可以通过加载文件内容,并通过获取文件信息。这就是在PowerShell中实现的方法:

获取内容My_text.txt | ForEach对象{Get ChildItem$\ uu.LastWriteTime} Get ChildItem Get Content My_text.txt.LastWriteTime 两个命令的作用相同。简称:

gc My_text.txt |%{ls$\uu.LastWriteTime} ls gc My_text.txt.LastWriteTime
如果需要批处理文件解决方案

FOR /F "usebackq delims=" %%G IN ("My_Text.txt") DO ECHO FileName:%%G Modified:%%~tG

因为一个或多个文件可能不存在,所以我可能会稍微改变代码的结构。我将首先检查每一行是否与现有文件相关,然后才获取其信息

我将提供的第一个示例是PowerShell,虽然它看起来像更多的文本,但它将更加可配置,特别是在修改结果的布局和内容方面

命令行:

For /F "UseBackQ Delims=" %G In (".\My_Text.txt") Do @If "%~aG" Lss "d" If "%~aG" GEq "-" Echo %~tG: %~nxG
获取内容-路径“.\My_Text.txt”| ForEach对象{如果测试路径-LiteralPath$|-PathType叶{获取项目-LiteralPath$|选择对象-属性LastWriteTime,Name} 命令行:

For /F "UseBackQ Delims=" %G In (".\My_Text.txt") Do @If "%~aG" Lss "d" If "%~aG" GEq "-" Echo %~tG: %~nxG
单行版本:

@For/F UseBackQ Delims=%%G In.\My_Text.txt Do@If%%~aG Lss d If%%~aG GEq-Echo%%~tG:%%~nxG暂停(&P)
在上面的所有示例中,我假设My_Text.txt位于当前目录中,如果不在,请更改其当前相对位置。\n如有必要,请不要修改其引用。

。你不能用DOS批处理读取文件内容,默认情况下你也不能访问长文件名。您尝试了什么?使用Powershell我们可以做到这一点吗?Rajdeep,我注意到您以登录此网站的身份返回,但没有对上面的评论或提供官方答案的人作出回应。请查看以了解在此场景中您可以选择哪些选项,因为没有可接受答案的问题不会被此网站视为已回答。是否确实是修改日期?只是说它将%I扩展到文件的日期和时间。不指明日期和时间that@phuclv,是,FOR命令使用修改后的日期和时间。当您在没有选项的情况下使用DIR命令时,该命令也默认为修改后的日期和时间。