有没有一种方法可以在纯批处理文件中(无需PowerShell脚本)获取文件夹的创建日期?特别是我想在这个for循环中获取它:
FOR /f "tokens=*" %%G in ('dir /b /s /a:d "C:\asdf\*"') DO CALL :loopbody "%%~tG" "%%G"
这个循环调用一个“函数”,将文件夹的修改日期作为第一个参数,文件夹路径作为第二个参数。
有没有一种方法可以在纯批处理文件中(无需PowerShell脚本)获取文件夹的创建日期?特别是我想在这个for循环中获取它:
FOR /f "tokens=*" %%G in ('dir /b /s /a:d "C:\asdf\*"') DO CALL :loopbody "%%~tG" "%%G"
这个循环调用一个“函数”,将文件夹的修改日期作为第一个参数,文件夹路径作为第二个参数。
for /f "skip=5 tokens=1,2 delims= " %%A in ('dir /ad /od /tc "dirname"') do (
echo %%A-%%B
goto :end_loop
)
:end_loop
尝试这个。结果将取决于您的时间设置,可能需要调整令牌和分隔符。也可以使用 WMIC
和混合 jscript/vbscript,但需要几分钟来创建脚本。
使用 wmic 进行编辑:
WMIC path Win32_Directory WHERE name='C:\\SomeDir' get creationdate
编辑 下面是一些常用的脚本,它们使用不同的方法获取文件或目录的时间戳:
@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
%%~dpfnG
而不是 dir 呢? - npocmaka%%~dpfnG
是什么? - Endoro/D /R "C:\SomeDir" %%G
,并且加入了创建时间。 - Endoro
die
应该改成dir
。 - Matt Williamson