File 命令提示帮助,显示特定文件

File 命令提示帮助,显示特定文件,file,batch-file,for-loop,command,command-prompt,File,Batch File,For Loop,Command,Command Prompt,需要你的帮助吗 我需要创建一个批处理文件(命令提示符)来 显示文件夹和子文件夹的列表 ⁃其中包含exe文件 ⁃仅显示2个最新的exe文件 ⁃显示特定文件夹并非全部 并将信息导出到txt文件中 如果有帮助的话,我正在使用XP 更新 我有以下命令 第一个按最新的文件工作和订购,但没有给我时间和日期 第二个显示时间和日期,但不按最近的日期排序 @ECHO关闭 SETLOCAL enabledelayedexpansion 设置“sourcedir=U:\sourcedir” 设置“lastdir=

需要你的帮助吗 我需要创建一个批处理文件(命令提示符)来 显示文件夹和子文件夹的列表 ⁃其中包含exe文件 ⁃仅显示2个最新的exe文件 ⁃显示特定文件夹并非全部

并将信息导出到txt文件中

如果有帮助的话,我正在使用XP

更新

我有以下命令

第一个按最新的文件工作和订购,但没有给我时间和日期

第二个显示时间和日期,但不按最近的日期排序



@ECHO关闭
SETLOCAL enabledelayedexpansion
设置“sourcedir=U:\sourcedir”
设置“lastdir=”
(
对于/f“delims=”%%a IN(
“dir/s/b/a-d”%sourcedir%\*.exe“
)做(
如果“%%~dpa”neq“!lastdir!”(
设置“lastdir=%%~dpa”
设置/a计数=0
对于/f“delims=“%%i IN('dir/s/b/a-d/o:d“%%~dpa\*.exe”)DO IF!count!lss 2(
设置/a计数+=1
回声%%~ti%%~fi
)
)
)
)>newfile.txt
后藤:EOF
生成newfile.txt。您需要在
sourcedir
中设置所需的目录名。我将数据显示为日期/时间fullfilename,因为fullfilename的长度可变,而日期和时间是固定的。如果您向我们展示了您所期望的格式,可能会更容易些-省去猜测和修改



要显示最近修改过的两个文件,请将
../b/a-d/o:d“%%……
更改为
../b/a-d/o:-d“%%……
(注意
-
介于
o:
d
之间)

使用Robocopy在当前文件夹树中显示两个最新修改的
.exe
文件
它还显示两个文件的UTC日期和时间

@echo off
setlocal enabledelayedexpansion
set "folder=%cd%"
set c=0
for /f "tokens=1,2,*" %%a in (
    'robocopy "%folder%" "%folder%" "*.exe" /s /is /nocopy /nc /ns /ts /fp /np /ndl /njh /njs /xjd /r:0 /w:0 /l ^| sort /r '
) do echo "%%a %%b" - "%%c" & set /a c+=1 & if !c! EQU 2 goto :done
:done
pause

需要更精确的任务信息。谢谢你,Magoo,只需一个问题,这会输出上次修改的文件,有没有办法扭转这种情况,显示两个最新(修改过的)文件。太好了,这似乎也可以,但我看不到时间和日期,只是文件名和路径您需要本地时间的日期和时间吗,或者UTC日期和时间可以吗?您可以看到Robocopy以UTC日期/时间运行和显示。我稍微修改了上面的代码以显示信息,让您看看它是如何显示的。Foxidrive-太棒了,新代码工作得非常完美,谢谢大家的帮助:)
@ECHO OFF
setlocal EnableDelayedExpansion
set j=0
echo\
Echo Test
echo\
FOR /f "delims=" %%i IN ('forfiles /p C:\testmove /s  /m *.* /C "cmd /c echo @file @fdate @ftime" ') DO (
    echo %%i
    set /A j=j+1
    if !j! geq 2 (
        goto :end2
    )
)

:end2 

pause
@echo off
setlocal enabledelayedexpansion
set "folder=%cd%"
set c=0
for /f "tokens=1,2,*" %%a in (
    'robocopy "%folder%" "%folder%" "*.exe" /s /is /nocopy /nc /ns /ts /fp /np /ndl /njh /njs /xjd /r:0 /w:0 /l ^| sort /r '
) do echo "%%a %%b" - "%%c" & set /a c+=1 & if !c! EQU 2 goto :done
:done
pause