Получить дату и время создания папки в пакетном скрипте

Я пытаюсь получить дату и время создания определенной папки в Windows. Основываясь на этом ответе, я попробовал следующее:

@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)

Я уверен, что он показывает даты создания для каждого из файлов (4 для моего примера) внутри folderB,

Я ищу сохранение даты и времени создания только для верхней папки folderB; Кто-нибудь может предложить / показать, как этого можно достичь, а также не получить все остальные даты / время создания?

Обратите внимание, что в ответе, приведенном в прикрепленной ссылке, есть exit /b 0 сразу после echo Created on: %%a, %%b команда, которую я не могу добавить в свой скрипт, так как есть несколько других команд, которые я хочу выполнить после получения системной даты и времени.

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 фильтр гарантирует, что . каталог сообщается.

Проверьте dirtimejs.bat - он может печатать время dir независимо от настроек панели управления:

@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
)
Другие вопросы по тегам