2017-07-05 161 views
1

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 

私はそれが(4ファイルのそれぞれについて、 作成日付を示し確信して
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の中にあります。

作成日時を保存することを検討していますトップフォルダのみfolderB;どのようにこれを達成することができ、他の作成日時もすべて取得しないことを誰かが示唆するか、または示すことができますか?添付のリンクを与えられた答えに、右の私は、システムの日付を取得を実行するいくつかの他のコマンドとがあるので、私は私のスクリプトに追加することはできませんecho Created on: %%a, %%bコマンドの後exit /b 0がある

注意時間。

+0

あなたがタグ[バッチファイル]の上にマウスを移動して、情報をクリックすると、あなたは '[バッチになります-file]タグwiki'ページに追加のリンクと情報があります。 – LotPings

答えて

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フィルタは、.ディレクトリが確実に報告されます。

+0

完璧、ありがとう! コマンドの各属性が何をしているかを説明するオンラインドキュメントを見つけるのは難しいので(上記の 'skip'のように)、非常に短い説明やリンクを使用していただければ幸いです。 "%% c" ==の場合は、 "for/f" skip = 5トークン= 1,2,4 delims = "%% a in( 'dir/ad/tc"%path_of_folder%\ "" ( "dt = %% a"コマンドを設定してください – Karim

+0

たとえば、 'dt = %% a'が何をするのか、なぜ必要なのか理解できません。 – Karim

+1

コマンドプロンプトから' for /? 'set dt ='ステートメントは 'dt'という名前の変数を日付の日付部分に設定します/報告された時間。なぜそれが必要かどうかわかりません - 投稿された元のコードに存在していたので、私はそれを保持しました。 – Magoo

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 
) 
関連する問題