25

ディレクトリ内の最新のサブフォルダーを取得するにはどうすればよいですか?
私はそれをMKLINK /D指揮する必要があります。

ありがとう

4

2 に答える 2

57
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /od') DO SET a=%%i
echo Most recent subfolder: %a%

( %iWindows 10 の場合)

  • /bベアフォーマット用です
  • /ad-hディレクトリのみ、非表示のディレクトリは除く
  • t:cソートに作成日を使用することを意味します (t:w最終書き込み日に使用)
  • /od古いものから順に並べ替える
  • for /Fコマンドを実行し、ディレクトリ名に a を設定します。最後のものが最新のものです。

これを (バッチ ファイルではなく) コマンド ラインで直接実行する場合は、%代わりに%%.

これは現在のディレクトリで機能します-@iesouが指摘したようにdir、他のディレクトリパスを使用する必要がある場合は、後でディレクトリパスを追加する必要があります。

ディレクトリ パスを指定した例:

FOR /F "delims=" %%i IN ('dir "c:\Program Files" /b /ad-h /t:c /od') DO SET a=%%i

すべてのサブフォルダーを通過しないようにするには、並べ替え順序を変更して最新のもの ( /o-d) を最初に呼び出し、最初の呼び出しの後に for ループを終了します。

@echo off
FOR /F "delims=" %%i IN ('dir /b /ad-h /t:c /o-d') DO (
    SET a=%%i
    GOTO :found
)
echo No subfolder found
goto :eof
:found
echo Most recent subfolder: %a%
于 2012-05-09T15:52:04.040 に答える
5

スペースを含むディレクトリ名の改善

FOR /F " tokens=*" %%i IN ('dir /b /ad-h /od') DO (SET a=%%i)  

a=Application の代わりに a=Application Data を取得するようになりました
注: 「トークン」の前のスペースに注意してください

于 2013-09-15T17:53:54.397 に答える