|
686) テキストより最後の行を取得後、その行をさらに分解 ヒロ 2003/10/09(木) 20:41 |
|
ディレクトリに決まった形式の名前(日付付き)でファイルが格納されていて、そのファイル群から一番最後に更新されたファイルのファイル名を取得して、その取得したファイル名をさらに分解して変数に格納したいですが・・・ ディレクトリの中 ---------------------------------------- A20031001 A20031101 A20031201 A20040101 A20040201 => 今回この名前を取得したい ---------------------------------------- さらに取得した「A20040201(=Ayyyymmdd)」を yy(西暦下2桁) mm dd のように分解して変数として格納したいです。 dir /B /OD > file.txtにリダイレクトして、その出力ファイルを何とか編集すれば良いのだろうか?とは考えたのですが、そこから見当が付きません。皆様から良きアドバイスを頂けたらと存知ます。 OSはWindows2000です。 |
|
687) Re:テキストより最後の行を取得後、その行をさらに分解 ふぇむ 2003/10/09(木) 23:20 |
|
>ディレクトリに決まった形式の名前(日付付き)でファイルが格納されていて、そのファイル群から一番最後に更新されたファイルのファイル名を取得して、その取得したファイル名をさらに分解して変数に格納したいですが・・・ > こんな感じですかね..... ソートは「名前逆順」がよかろうと思います。 @echo off setlocal set TARGETDIR=tgt for /F "tokens=*" %%z in ( 'dir "%TARGETDIR%" /b /o:-n' ) do ( set PICKUP=%%z goto :exit_for ) :exit_for echo pickup = %PICKUP% set YY=%PICKUP:~3,2% set MM=%PICKUP:~5,2% set DD=%PICKUP:~7,2% echo 分解 = %YY% %MM% %DD% goto :end :end endlocal |
|
688) Re2:テキストより最後の行を取得後、その行をさらに分解 ヒロ 2003/10/10(金) 10:47 |
|
ありがとうございます! 実行してみたらうまくいきました。 %%zって最後の値って意味になるんですね。 あと、echoで指定の文字数だけを出力できるのも知りませんでした・・ 大変勉強になりました。 |
|
689) Re3:テキストより最後の行を取得後、その行をさらに分解 ふぇむ 2003/10/10(金) 15:12 |
|
>%%zって最後の値って意味になるんですね。 いやそれは違います。先のサンプルでたまたま私が変数として z を使ったというだけです。順番を決めているのは次のところですよ。 'dir "%TARGETDIR%" /b /o:-n' と for文中の goto :exit_for です。前者で、名前降順のリストをつくって、後者でその1行目を処理するや脱出しているわけです。 |