在批处理脚本中获取文件夹的创建日期和时间

时间:2017-07-05 13:52:05

标签: windows batch-file directory systemtime

我正在尝试获取Windows中特定文件夹的创建日期和时间。 基于此answer,我尝试了以下内容:

@echo off
set path_of_folder="C:\folderA\folderB\"

if exist %path_of_folder% ( 
  echo Path exists.
  for /f "skip=5 tokens=1,2 delims= " %%a in ('dir /a-d /tc %path_of_folder%') do set "dt=%%a"
    echo Created on: %%a, %%b
  )
) 
else ( 
  echo Path does not exist. 
)

pause

我得到这个输出:

Path exists.
Created on: 05/07/2017, 17:42
Created on: 05/07/2017, 17:42
Created on: 05/07/2017, 17:42
Created on: 05/07/2017, 17:42
Created on: 4, File(s)
Created on: 0, Dir(s)

我确信它会在 folderB中显示每个文件的创建日期(我的例子中为4个)

我正在考虑将创建日期和时间仅保存到顶级文件夹 folderB;任何人都可以建议/展示如何实现这一点,而不是获得所有其他创建日期/时间?

请注意,在附加链接上给出的答案中,在exit /b 0命令后面有一个echo Created on: %%a, %%b我无法在我的脚本上添加,因为我还要执行其他几个命令 之后我得到系统日期和时间。

2 个答案:

答案 0 :(得分:2)

@ECHO OFF
SETLOCAL
set "path_of_folder=C:\sql2016\mssql13.sqlexpress03"

if exist "%path_of_folder%" ( 
  echo Path exists.
  for /f "skip=5 tokens=1,2,4 delims= " %%a in (
   'dir /ad /tc "%path_of_folder%\."') do IF "%%c"=="." (
    set "dt=%%a"
    echo Created on: %%a, %%b
  )
) else ( 
  echo Path does not exist. 
)

GOTO :EOF

我使用了不同的目标目录,因为我从提示符运行,我已经替换了pause

请注意,包含path的变量现在没有结束\,也没有引用。这有助于进行修改,但意味着在需要时,需要“引用”对该变量的引用。

只需在%%c中选择目录的名称部分即可。因此,您需要一个目录的列表,因此需要/ad。感兴趣的目录名是.所以只有执行分配并报告找到的目录名是"."

skip=5是多余的,如果您愿意,可以删除。 if过滤器可确保报告.目录。

答案 1 :(得分:1)

检查dirtimejs.bat - 它可以独立于控制面板设置打印目录时间:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set "path_of_folder=C:\folderA\folderB"

for /f "tokens=1* delims=:" %%a in ('dirtimejs.bat "%path_of_folder%" ^| find "Created :"') do (
     echo %%a
)