批处理文件:获取文件夹的创建日期

时间:2013-12-11 13:12:23

标签: windows batch-file

有没有办法在纯批处理文件(无电源脚本)中获取文件夹的创建日期?特别是,我想把它放在for循环中:

FOR /f "tokens=*" %%G in ('dir /b /s /a:d "C:\asdf\*"') DO CALL :loopbody "%%~tG" "%%G"

这个循环调用一个'function',文件夹的修改日期作为第一个参数,文件夹的路径作为第二个参数。

2 个答案:

答案 0 :(得分:8)

for /f "skip=5 tokens=1,2 delims= " %%A in ('dir /ad /od /tc "dirname"') do (
  echo %%A-%%B
  goto :end_loop
)
:end_loop

试试这个。结果将取决于你的时间设置,可能你需要调整标记和delims.It也可能与WMIC和混合jscript / vbscript,但需要几分钟来创建一个脚本。

使用wmic:

编辑

WMIC path Win32_Directory WHERE name='C:\\SomeDir' get creationdate

编辑以下是使用不同方法获取文件或目录时间戳的一些现成的脚本:

  1. fileModifiedTime.bat - 获取具有独立设置格式的文件的上次修改时间。基于 robocopy
  2. fileTimes.bat - 获取 WMIC
  3. 的文件时间戳
  4. dirTimes.bat - 获取 WMIC
  5. 的目录时间戳
  6. fileTimesJS.bat - 使用 jscript
  7. 文件时间戳
  8. dirTimesJS.bat - 使用 jscript
  9. 的目录时间戳
  10. fileTimesNET.bat - 使用 .NET
  11. 创建时间戳
  12. dirTimesNET.bat - 带有 .NET
  13. 的时间戳

答案 1 :(得分:4)

    @ECHO OFF &SETLOCAL
    CD "StartFolder"
    FOR /D /R %%G in (*) DO (
        SET "FileName=%%~G"
        SETLOCAL ENABLEDELAYEDEXPANSION
        FOR /F %%H IN ('wmic fsdir where name^="!FileName:\=\\!" get creationdate^|find "."') DO SET "cdate=%%H"
        CALL :loopbody "!cdate:~6,2!/!cdate:~4,2!/!cdate:~0,4!-!cdate:~8,2!:!cdate:~10,2!:!cdate:~12,2!" "!FileName!"
        ENDLOCAL
    )
    GOTO:EOF

    :loopbody
    ECHO %~1 "%~2"
    EXIT /B