2017-09-11 4 views
1

最初に(最後に変更された)フォルダ名を取得する方法\\demo\Test\test1\
最初のフォルダがtest-new_20170908.2の場合test-new_20170908.2はどうすれば入手できますか?20170908.2部分のみ?バッチファイルの指定されたパスの最初の(最後に変更された)フォルダ名を取得する方法

これは私がこれまで何をやったかである:

@echo off 
set MYDIR=\\demo\Test\test1\ 
set MYDIR1=%MYDIR:~0,-1% 
for %%f in (%MYDIR1%) do set myfolder=%%~nxf 
echo %myfolder% > folderPath.txt 

このコードは私にtest1を与えるが、私は与えられたパス内の非常に最初のフォルダ名をしたい、これが私の仕様どおりに動作しません。
誰かが私を助けることができますか?

+0

あなたは最初のフォルダとはどういう意味ですか:zの前に名前aでアルファベットを並べ替え? –

+0

@AndreKamplingこのパスの '\\ demo \ Test \ test1 \'からの最初のフォルダは常にデータと時刻によって更新されますので、最近修正されたものが最初になります。この場合** test-new_20170908.2 **と私はフォルダ名を必要としていましたが、そのフォルダ名からのみ使用したいと思っています** 20170908.2 ** –

答えて

1

次のスクリプトは、ソートされます。すべてのディレクター最後の書き込み日(/o:-d /tw)までにdemo\Test\test1の下にある_/a:d)をダブルクリックして、_name_date(つまりdate)で区切られた名前の2番目のトークンを保存します。

バッチスクリプト:

@echo off 

set "MYDIR=demo\Test\test1" 

rem sort directories by date (last write) 
for /f "tokens=*" %%f in ('dir "%MYDIR%" /a:d /o:-d /tw /b') do (
    rem use second token after _ in name 
    for /f "tokens=2 delims=_" %%a in ('echo %%f') do (set "myfolder=%%a") 
    goto :found 
) 

:found 

echo %myfolder% 

出力:ss64.comから

20170908.2 

コマンド参照リンク:

0
@ECHO OFF 
SETLOCAL 
set MYDIR=\\demo\Test\test1\ 
set MYDIR1=%MYDIR:~0,-1% 
SET "mydir=U:\sourcedir\" 
FOR /d %%a IN ("%mydir%\*") DO SET "myfolder=%%~nxa"&GOTO found 
:found 
echo %myfolder% 

GOTO :EOF 

mydirの設定は、私のシステムで便利なディレクトリにオーバーライドされました。すべてのディレクトリのための

ルック(for /d)(ここで\はあなたがmydirの値でターミナル\を含めるかどうか、それは無関係になり(私の好みはその端末\を省略してある)、返さディレクトリ名を扱う付属のマスクをマッチングファイル名としてforと名前分割演算子を使用して名前と拡張子を選択し、発生したように、第1の割当後gotoforから可変力出口に結果を割り当てる

関連する問題