2017-11-13 10 views
1

を使用して、配列内の値は、次のコードは、日付順に並べ替えられたディレクトリ内のすべてのフォルダを一覧表示し、%で印刷バッチ

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

がどのように私は2番目の最近のものを印刷しない%を最新のフォルダを表示しますか?私は%a [1]%を使ってみましたが、うまくいきませんでした。

答えて

1

ここでは、カウンタを使用して動的に配列を取り込む方法を示す別の方法を示します。我々は

@echo off 
Title Print the values in an array using batch 
Set "MasterFolder=C:\FRST" 
Set "RecentFolder=" 
set /a "count=0" 
Setlocal EnableDelayedExpansion 
Rem Populate two arrays with names and full paths dynamically while we increment the counter 
@FOR /F "delims=" %%a IN ('dir "%MasterFolder%" /b /ad-h /t:c /o-d') DO ( 
    if not defined RecentFolder (
     set /a "Count+=1" 
     set "RecentFolderName[!Count!]=%%~na" 
     set "RecentFolderPath[!count!]=%%~fa" 
    ) 
) 

Rem Display numbered Folders Names and full paths 
color 0A & Mode 90,30 & cls & echo( 
@for /L %%i in (1,1,%Count%) do (
    set "RecentName=[%%i] - !RecentFolderName[%%i]!" 
    set "RecentFullPath=FullPath - "!RecentFolderPath[%%i]!"" 
    echo !RecentName! 
    echo !RecentFullPath! 
    echo -------------------------------------------------- 
) 
Pause 
forindoループにカウンタをインクリメントしながら、

あなたは、例えば、動的に名前と完全なパスを持つ2つの配列を移入することができます

1
set "a=" 
FOR /F "delims=" %%i IN ('dir "directory" /b /ad-h /t:c /o-d') DO if not defined a SET "a=%%i" 

は悲しい二最新

を設定

最新

set "a=" 
FOR /F "skip=1delims=" %%i IN ('dir "directory" /b /ad-h /t:c /o-d') DO if not defined a SET "a=%%i" 
を設定し、 skip=0が実装されていません。

意味のある変数名を使用してください。