Получить дату и время создания папки в пакетном скрипте
Я пытаюсь получить дату и время создания определенной папки в 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
)