想要在CMD提示中检索文件内文件名列表的"修改日期"



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

My_Text.txt contains
D:Usersdsa99_pDesktopMy_Program1.txt
D:Usersdsa99_pDesktopMy_Program2.txt
D:Usersdsa99_pDesktopMy_Program3.txt
D:Usersdsa99_pDesktopMy_Program4.txt
and so on..

我想检索所有这些My_Program1、My_Program 2、My_Pogram3、My_Pprogram4文件的修改日期。怎么做?请帮忙。

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

在PowerShell中,Get-Content可以加载文件内容,Get-ChildItem可以获取文件信息。这就是它在PowerShell中的实现方式:

Get-Content My_text.txt | ForEach-Object { (Get-ChildItem $_).LastWriteTime }
(Get-ChildItem (Get-Content My_text.txt)).LastWriteTime

两个命令的作用相同。较短的形式:

gc My_text.txt |% { (ls $_).LastWriteTime }
(ls (gc My_text.txt)).LastWriteTime

如果您想要一个批处理文件解决方案

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

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

我将提供的第一个例子是PowerShell,虽然它看起来像是更多的文本,但它的可配置性要高得多,尤其是在修改结果的布局和内容方面。

powershell命令行:

(Get-Content -Path '.My_Text.txt') | ForEach-Object { If (Test-Path -LiteralPath $_ -PathType Leaf) { Get-Item -LiteralPath $_ | Select-Object -Property LastWriteTime, Name } }

cmd命令行:

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)&Pause

在上面的所有示例中,我假设My_Text.txt在当前目录中,如果不是,请根据需要更改其当前相对位置.,而不修改其引用

最新更新