Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 要在txt文件中按日期显示目录中最新可用文件的批处理脚本_File_Date_Batch File - Fatal编程技术网

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

File 要在txt文件中按日期显示目录中最新可用文件的批处理脚本,file,date,batch-file,File,Date,Batch File,我有一个简单的批处理脚本: @echo off dir /o-d "K:\DIR\DIR\*.exe" > "D:\Logs\Files.txt" 它按日期显示txt中的所有文件 我的问题是:我怎样才能让它只按日期显示最后一个文件,而不是该特定目录中的所有文件 提前感谢。我认为使用shell/batch命令是不可能的 您可以编写另一个程序来拾取Files.txt文件的第一行 @echo off setlocal for /f "delims=" %%F in ('dir /b /o-d

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

@echo off
dir /o-d "K:\DIR\DIR\*.exe" > "D:\Logs\Files.txt"
它按日期显示txt中的所有文件

我的问题是:我怎样才能让它只按日期显示最后一个文件,而不是该特定目录中的所有文件


提前感谢。

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

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

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

  • 要理解的
    %%~nxF%%~tF的,请阅读帮助(
    命令行中的
    帮助)
  • goto
    只是在第一个(最新)文件/dir之后中断循环
  • 若要重定向到文件,请重定向批本身(
    batch.bat>myFile
    )或最后一次回显(
    echo%file%>myFile
  • 默认情况下,Dir匹配子目录和文件。使用
    dir/a-d
    仅匹配文件
检索最后一行 如果您只对最后一个文件感兴趣,可以执行以下操作:

@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"
echo %first% > "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 %last% > "D:\Logs\Files.txt"
echo %first% > "D:\Logs\Files.txt"

仅获取最新文件的文件名

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