批处理脚本按日期显示在目录中可用的txt文件最新文件中

时间:2012-09-19 10:13:16

标签: file date batch-file

我有这个简单的批处理脚本:

@echo off
dir /o-d "K:\DIR\DIR\*.exe" > "D:\Logs\Files.txt"

按日期显示txt中的所有文件。

我的问题是:我如何才能通过日期向我显示最后一个文件,而不是该特定目录中的所有文件?

提前致谢。

4 个答案:

答案 0 :(得分:2)

检索最后一行

如果您只对 last 文件感兴趣,可以这样做:

@echo off
for /f "tokens=*" %%a in ('dir /o-d "K:\DIR\DIR*.exe" ^| findstr /C:"/"') do set last=%%a
echo %last%

这仅显示dir命令输出中的最后一个文件名。如果要将其重定向到文件,请将echo %last%替换为:

echo %last% > "D:\Logs\Files.txt"

检索第一行

如果您对第一个文件感兴趣,则需要稍微更改代码:

for /f "tokens=*" %%a in ('dir /o-d "K:\DIR\DIR*.exe" ^| findstr /C:"/"') do set first=%%a && goto Done
:Done
echo %first%

同样,如果您对将其重定向到文件感兴趣,请将echo %first%替换为:

echo %first% > "D:\Logs\Files.txt"

答案 1 :(得分:1)

@echo off
setlocal 
for /f "delims=" %%F in ('dir /b /o-d') do (
  set file=%%~nxF %%~tF
  goto display
)
:display
echo %file%

注意:

  • 要了解for和'解密'%%~nxF %%~tF,请从命令行阅读for帮助(help for
  • goto只是为了在第一个(最新)文件/目录之后打破循环。
  • 要重定向到文件,请重定向批次本身(batch.bat >myFile)或最后一次回送(echo %file% > myFile
  • Dir默认匹配子目录和文件。使用 dir /a-d仅匹配文件。

答案 2 :(得分:0)

我认为使用shell / batch命令是不可能的。

您可以编写另一个程序来选择Files.txt文件的第一行

答案 3 :(得分:0)

仅获取最新文件的文件名

@echo off
for /f "tokens=*" %%x in ('dir /b /o-d "K:\DIR\DIR\*.exe"') do (
    echo %%x
    exit /b 0
)