スポンサー広告
         
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 
 

Geek
         みんな大好きDosコマンド。
Windows10が利用できるようになって、Bashが使えるようになったとは行っても、まだまだレガシーな環境はある。
場合によっては、Batだけでなんとかしなきゃならない時がある。今日つまったのは、

特定ディレクトリの配下にあるファイル名、サイズソートはDirコマンドを利用して出すことができるけれども、
その中でファイルサイズが最大のものだけを変数に入れて処理をしたい(ただしファイル名にはスペースが存在する)

というニッチな状況

ぶっちゃけBash使えたら一瞬だよね。という内容だよね。
 
 
Dirコマンドを利用すると
惜しいかなWindowsさんのイケてる仕様によってスペースが入っているファイル名を変数に入れようとすると、スペース前の値までが入って来てしまう

例えば、 "Program Files" なんかがそうだけれども、

set FILEPATH='dir "Program Files"'

としたとき、

echo %FILEPATH% の結果は、  Program になってしまう

自分でも忘れそうなので細かくメモ

まずはDirコマンドを利用して、ファイルサイズソートをする

#
dir Filename /Os /b
#


  1. オプション O を利用して、 s を利用することでファイルサイズソートになる
  2. オプション b を利用すると詳細を非表示にしてファイル名のみアウトプットする


複数のファイルの中から抽出するときは、 Filename* といった形で正規表現を利用しよう
次に肝心の、Batファイルで変数を利用する。


#
for /F "DELIMS=" %%A ('dri FILENAME* /Os /b') DO set MAX_FILE=%%A
#
#


  1. Batにする前にコマンドプロンプトでテストする場合、%%Aは%Aとしないと失敗する
  2. for文で特定のコマンド(今回はDirコマンド)の結果を繰り返し変数 MAX_FILE に入れる処理を行う
  3. このとき、 "DELIMS="をつけないとスペースが含まれたファイル名は利用できず、最初のスペースまでの値が変数に入る


以上!
スポンサーサイト

関連キーワード(ユーザータグ):
Windows,Dos,Bat

トラックバック用URL ;http://gatolynx.blog100.fc2.com/tb.php/359-808db704

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。