2011年3月8日火曜日

%変数の使い方 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。制御文と環境変数
○Windows XP
%1などの引数や、FORコマンドで使う%変数は、呼び出された先だけで、一時的に使う事が出来ます。
これらの変数を使う時は、ファイル操作に関する便利な書式を利用する事が出来ます。

o 環境変数と%変数は、得意分野が異なります。
    + 環境変数を使うと、文字の置換や一部分の取り出しが簡単に出来ます。
    + %変数を使うと、ファイルのサイズや拡張子などを、簡単に取得する事が出来ます。
o なお、%変数 の正しい呼び方は「変数」です。
    + 環境変数と区別する為に、このメモでは呼び方を変えてみました。


**** 書式
--------
画面に直接書く時や引数(= %1など)は
%[[~]オプション]変数名
バッチファイルに書くFORの変数は
%%[[~]オプション]変数名
--------

o この時の変数名は、大文字小文字を区別「します」。
o % = 変数名の先頭に付けます。
    + バッチファイルに書くFORの変数は、%% と書きます。
o ~ = チルダです。書式オプションを指定する時に使います。
    + 前後に空白を入れません。
    + 「Shift」キーを押しながら、「0」キーの2つ右のへの字のキーを押します。
o オプション = 書式オプションです。複数指定する事も出来ます。
    + 前後に空白を入れません。
    + 使用出来る書式オプションは、下記の通りです。
o 変数名 = 1文字です。大文字小文字を区別「します」。

%変数の書式オプションの概要
記号意味結果例
オプションの意味
~ (チルダ)「"」を除去します(%の直後に付けます)
dドライブ名C:
p途中のパス部分\ミクさん\
nファイル名部分強いネギの作り方
x拡張子.txt
fフルパスC:\ミクさん\強いネギの作り方.txt
$環境変数名:フルパス(環境変数に書いたパスも検索します)
s8.3形式フルパスC:\ミクさん\強いネ~1.TXT
aファイルの属性-rahsc---
tファイルの最終更新日時2011/03/09 20:39
zファイルサイズ393
組み合わせ例
~dp親フォルダー。最後に\C:\ミクさん\
~nx拡張子付きのファイル名強いネギの作り方.txt


**** 書式オプションについて
o 書式オプションは複数並べる事も出来ます。
o 複数並べる方法については、後で記します。

--------
%変数名
--------

o %a (オプション無し)= 変数 %a の、そのままの値です。

** ファイル名の取り出しに便利なオプション(~fdpnxs$)
--------
%~変数名
--------

o %~a = 文字列 %a から「"」(= 二重引用符)を削除した文字列です。
    + 文字列の途中にある「"」も除去します。
    + 以下、%~ から始まる名前は、全てこの機能を含みます。

--------
%~d変数名
--------

o d = ドライブ文字部分です。(「C:」)
    + %~da = 文字列 %a をファイルとみなして、ドライブ文字部分を取得します。
    + ファイルの存在確認はしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

--------
%~p変数名
--------

o p = ドライブ文字部分を除いたパス部分です。(「\ミクさん\」)
    + %~pa = 文字列 %a をファイルとみなして、パス部分を取得します。
    + ファイルの存在確認はしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

--------
%~n変数名
--------

o n = 拡張子を除いたファイル名部分です。(「強いネギの作り方」)
    + %~na = 文字列 %a をファイルとみなして、ファイル名部分を取得します。
    + ファイルの存在確認はしません。

--------
%~x変数名
--------

o x = ファイル拡張子です。(「.txt」)
    + %~xa = 文字列 %a をファイルとみなして、拡張子を取得します。
    + ファイルの存在確認はしません。

--------
%~f変数名
--------

o f = フルパスです。(「C:\ミクさん\強いネギの作り方.txt」)
    + %~fa = 文字列 %a をファイルとみなして、フルパスを取得します。
    + ファイルの存在確認はしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

--------
%~$環境変数名:変数名
--------

o $と: = フルパスです。この時、環境変数(= セミコロン区切り)からパスを検索します。
    + %~$PATH:a = 文字列 %a をファイルとみなして、フルパスを取得します。
    + 実行ファイルの検索動作とは異なり、カレントディレクトリは検索しません。
    + 次の条件を全て満たす時、指定した環境変数に無いパスも検索します。
        + 存在するファイルをフルパスで指定する
        + かつ、環境変数に、何か値が入っている
    + 指定した環境変数が定義されていない時は、常に空 = 0文字です。

--------
%~s変数名
--------

o s = 8.3形式フルパス = DOS時代からある短いファイル名です。(「C:\ミクさん\強いネ~1.TXT」)
    + %~sa = 文字列 %a をファイルとみなして、8.3形式フルパスを取得します。
    + ファイルが存在しない時は、ファイル名を短くしません。
    + パス部分を書いていない時、カレントディレクトリ上にファイルがあるものと解釈します。

** ファイル情報の取り出し用オプション(~atz)
--------
%~a変数名
--------

o a = ファイルの属性です。(「-rahsc---」)
    + %~aa = 文字列 %a をファイルとみなして、ファイルの属性を取得します。
    + 読み取り専用属性などの有無を、文字列の形で確認出来ます。
        + r = 読み取り専用属性
        + a = アーカイブ属性
        + h = 隠しファイル属性
        + s = システムファイル属性
        + c = 圧縮済み
        + 表示領域は9個分ありますので、他にも表示出来る属性があるかもしれません。
    + ファイルが存在しない時、空 = 0文字です。
    + 後ろに他の属性が並ぶ時、間に空白文字が1つ入ります。
    + ATTRIB コマンドよりも、取得出来るファイル属性が多いです。。。

--------
%~t変数名
--------

o t = ファイルの最終更新日時です。(「2011/03/09 20:39」)
    + %~ta = 文字列 %a をファイルとみなして、ファイルの最終更新日時を取得します。
    + ファイルが存在しない時、空 = 0文字です。
    + 後ろに他の属性が並ぶ時、間に空白文字が1つ入ります。

--------
%~z変数名
--------

o z = ファイルサイズです。(「393」)
    + %~za = 文字列 %a をファイルとみなして、ファイルサイズを取得します。
    + 少なくとも、4GB余りのバイト数(5,000,003,584バイト)は、正しく取得する事が出来ました。
    + 後ろに他の属性が並ぶ時、間に空白文字が1つ入ります。
    + ファイルが存在しない時、空 = 0文字です。

** 書式オプションを複数並べる方法
o 書式オプションは、複数並べる事も出来ます。
o 複数並べた時の表示順は決まっています。
    + 表示順は、「属性、日付、ファイルサイズ、パス」です。
    + 短いファイル名を指定した時は、普通のファイル名は省略します。
    + フルパスとパスの要素を両方指定した時は、フルパスのみ表示します。
o 同じ書式を複数指定すると、一つ以外は無視します。

** 書式オプションの、良く使う組み合わせ
o %~nxa = 拡張子付きのファイル名です。
o %~dpa = ファイル %a の親フォルダーです。最後は \ で終わります。


**** メモ
o 書式オプションを指定すると、「"」が除去されます。
o ファイル名を扱う時は、必要に応じて「"」で括ります。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > 環境変数の使い方。置換と部分文字列
    環境変数の生存期間について
    SET /A コマンドで数値計算出来る値の範囲(= 上限と下限)
(2011年3月9日変更。説明部分の見直し。%1は%1つ。$環境変数の使用条件を訂正)

2011年3月7日月曜日

ピアノロール画面。メニューアイコン1行目の意味 - FL STUDIO

ピアノロール
○FL9.1
ピアノロールの主要機能は、1列目に詰まっています。
ですので、1列目の並び方と意味を覚えると、ピアノロールでの入力操作で迷わなくなります。

o アイコンの意味を簡単に知りたい時は、アイコンにマウスカーソルを合わせて、FL STUDIO画面の左上を見ます。
    + FL STUDIO画面のメニューの下の行に、簡単な説明が表示されます。
o アイコンの意味をまとめて確認したい時は、「F1」キー。ヘルプ画面を呼び出します。


**** 1行目にあるアイコンの意味
o ピアノロールのアイコン1行目は、次のように並んでいます。
    + 最初の3つ = 機能メニューと「単位幅の設定」です。
    + 次の8つ = マウス操作の意味を変更します。
    + 再生ボタンとタイトル部分 = 再生、停止の他、編集対象を切り替えます。
    + 右の2つ = (ピアノロール画面の)最大化ボタンと閉じるボタンです。

** 最初の3つ = 機能メニューと「単位幅の設定」
o ▼マーク = Piano roll menu
    + ピアノロール画面のメニューです。押すと、選択肢が沢山出てきます。
o 工具マーク = Quick tool menu
    + 音符を加工する機能が並んでいます。
    + ▼マークの「Tool」の内容と同じです。
o U型磁石マーク = Snap menu
    + 音符を置いたり伸び縮みさせる時の、単位幅です。
    + 指定すると、単位幅に合わせて「正確に」置く事が出来ます。

** 次の8つ = マウス操作の意味の変更 = Tools menu
o 鉛筆マーク = Draw = 「Shift」キーを押しながら「P」
    + クリックすると、音符を1つ置きます。
    + クリックしたままマウスを横に動かすと、置いた音符が動きます。
    + 音符の上で右クリックすると、音符が消えます。
        + 右クリックは、消しゴムのように使う事も出来ます。
        + 右クリックしたまま、音符を1度擦ります。
o ブラシマーク = Paint = 「Shift」キーを押しながら「B」
    + 音符を連続配置します。
    + クリックしたままマウスを横に動かすと、同じ長さの音符が並びます。
    + 音符の上で右クリックすると、音符が消えます。
        + 右クリックは、消しゴムのように使う事も出来ます。
        + 右クリックしたまま、音符を1度擦ります。
o 禁止マーク = Erase = 該当キーは無いみたいです。
    + 消しゴムです。音符の上でクリックすると、選択した音符を削除します。
    + クリックしたまま音符を1度擦ると、音符は消えます。
    + 右クリックはクリックと同じ動作をします。
        + 実際には、この機能を愛用する人はあまり居ないと思います。
        + 鉛筆マークなどを選択している時にも、右クリックで同じ操作が出来るからです。
o スピーカーに×マーク = Mute =「Shift」キーを押しながら「T}
    + 消音(= ミュート)です。クリックすると、選択した音符を消音します。
    + 消音状態にある音符は、灰色をしています。元に戻したい時は、もう一度音符をクリックします。
    + 音符の上で右クリックすると、音符が消えますので気を付けます。
o カッターナイフマーク = Cut = 該当キーは無いみたいです。
    + 分割ツールです。クリックすると、選択した音符を分割します。
    + 複数の音符を同時に分割する事も出来ます。
    + 音符の無い所でクリックして、クリックしたまま複数の音符を横切ってから離します。
o 枠マーク = Select =「Shift」キーを押しながら「E}
    + 音符の選択です。クリックしたままマウスを動かすと、音符を枠のように選択する事が出来ます。
    + 複数の音符を選択したい時は、「Shift」キーを押しながら操作します。
    + 右クリックはクリックと同じ動作をします。
    + 音符を選択した後の一括操作は、他のマークに切り替えてから行います。
o 取っ手付きの四角マーク = Zoom to selection =「Shift」キーを押しながら「Z}
    + 拡大倍率を変更します。
    + キーボードの場合、数字を押すと倍率が変化します。
    + 指定出来る数字は、1から4まで。状況によっては5まで。
    + マウスの場合、このマークを右クリックすると、倍率を細かく選択出来ます。
    + 画面をクリックすると、4 を選んだ時と同じ状態になります。
    + 音符を枠のように選択してからクリックすると、倍率が変わります。
o スピーカーマーク = Playback (scrub) =「Shift」キーを押しながら「Y}
    + マウスカーソルの位置に、スピーカーのアイコンと縦線が現れます。
    + クリックすると、縦線上にある音符を鳴らします。

** 再生ボタンとタイトル部分 = 再生、停止と、編集対象の切り替え
o 横向きの▲マーク = 再生、停止
    + 押すと、「PAT」モード(= パターンモード)に切り替わります。
    + FL STUDIO画面にある再生ボタンの左側をご覧下さい。
        + 「PAT」モードの時は、スペースキーでも、パターンを再生、停止する事が出来ます。
        + また、WAVファイルなどを書き出す時に、現在のパターン部分だけ書き出します。
o タイトル部分の文字列
    + 「Piano roll - 編集中の楽器名(= Target Channel) - 下で編集出来る表情コントロール名(= Target Control)」
    + 楽器名をクリックすると、チャンネルウインドウ上にある別の楽器に切り替える事が出来ます。
    + 表情コントロール名をクリックすると、下の画面で操作出来る表情を変更する事が出来ます。
o 文字列以外のバー部分
    + Windowsのタイトルバーと同じ働きをします。
    + ダブルクリックすると、FL STUDIO画面内で最大化表示します。

** 右の2つ = (ピアノロール画面の)最大化ボタンと閉じるボタン
o 最大化ボタン
    + Windowsのタイトルバーにあるものと同じです。
    + クリックすると、FL STUDIO画面内で最大化表示します。
    + もう一度クリックすると、元の大きさに戻ります。
o 閉じるボタン
    + Windowsのタイトルバーにあるものと同じです。
    + FL STUDIO内での全画面表示に切り替える事が出来ます。


**** メモ
o 良く使う機能は、キーボード操作する手順も覚えると、快適操作出来る様になります。
    + キーボード操作は、マウス操作しない方の手で行います。
o FL STUDIO 9.1.0 の場合、FL STUDIOの説明文の通りキーボード操作しても、動かない機能がありました。
    + 動かなかった時は、このメモに書いているキーボード操作手順で試してみて下さい。
    + (もしかすると、オプションによって操作キーが変わるのかもしれません。)


**** 確認したバージョン
o FL STUDIO 9 Producer Edition   Version 9.1.0 (Signature Bundle)


==
関連ページ:
    ▼ピアノロール(= Piano roll)
    ▼チャンネルウインドウ(= Channel Window & Step Sequencer)
    ▼FL STUDIO
    ▼制作メモ
    > FL STUDIOのピアノロール画面で、同じパターン上にある他の楽器の音符を透かして見る
    FL STUDIOのピアノロール画面で、ゴーストとして見える音符を編集する

2011年3月6日日曜日

FOR /R = FOR文でサブフォルダーも処理対象にする - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFOR
○Windows XP
FOR文を普通に書くと、一つのフォルダーの中だけでファイルを探します。
/R オプションを付けると、サブフォルダーの中にあるファイルも処理の対象にする事が出来ます。

o ワイルドカード(「*」や「?」)を使わない場合、動きが独特ですので注意します。
    + 見つかったフォルダー毎に、「見つかったフォルダー + "\" + 指定した文字列」が渡ります。
o /D オプション(= フォルダーのみ検索します)と一緒に指定する事も出来ます。


**** 書式
--------
for [/d] /r [ 検索するパス ] %変数名 in ( 検索するファイル名 ) do 実行するコマンド
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 但し、変数名に限り、大文字小文字を区別します。
o /d = /D オプションです。
    + このオプションを指定すると、ワイルドカードを指定した時に、ファイルではなくフォルダーを探します。
    + このオプションを /R オプションの後ろに置く時は、「検索するパス」の後ろに置きます。
o /r = /R オプションです。
o 検索するパス = ここで指定したフォルダーの下を探します。
    + 省略すると、カレントディレクトリ(= 現在居る場所)の下を探します。
    + 存在しないフォルダーを指定する事も出来ます。
    + ここでは、UNIX形式の区切り文字「/」も指定出来ます。(例「C:/ミクさん」)
    + 空白やカンマ付きのフォルダーを指定する時は、「"」で括り、ワイルドカードを含めて指定します。
        + (例「"C:\ミクさん ネギ"」)
o %変数名 = 変数になる名前です。変数名は1文字で指定します。(例: %i)
    + バッチファイルでは、%%変数名。「%」を2つ書きます。
    + 変数名のおすすめは、英字1文字。こちらはヘルプに書かれています。
        + 大文字小文字を区別しますので、使う時には気を付けます。
        + (仕様外の動作)実際には、英字の他に、数字や、漢字などの全角文字も使用出来ました。(= Windows XPの場合です。)
o 検索するファイル名 = 「検索するパス」からの相対パスで指定します。
    + このコマンドは、「検索するパス」の下層にあるファイルのみを探す事を想定しています。
    + ワイルドカード(「*」や「?」)を使った時、「検索するパス」の下層にあるファイルだけを実際に探します。
    + ワイルドカードを使わない場合は、渡したい文字列を書く事が出来ます。
        + この時、FOR文は、ファイルの存在判定を行いません。
        + 「検索するパス」自身とサブフォルダーが見つかる度に実行します。
        + 変数に入る値は、「見つかったフォルダーのパス + "\" + 指定した文字列」になります。
        + ですので、実際に使う時は、呼び出したコマンド側で、変数を加工する必要があります。
        + 制限事項として、「*」、「?」、空白、カンマは渡したい文字列に使用する事が出来ません。
    + ファイル名は、複数指定する事が出来ます。空白やカンマで区切ります。
        + 検索結果が重複する時、1つのファイルに付き、コマンドを複数回呼びします。
    + 次の時は、「"」で括り、ワイルドカードを含めて指定します。
        + 空白やカンマ付きのフォルダーを指定する時(例「"a\miku san?"」)
        + ファイル名の中に「*」や「?」が含まれていないと、単なる文字列とみなしますので、注意します。
    + UNIX形式の区切り文字「/」は、基本的には指定出来ません。
        + 「"」で括り、ワイルドカードを含めて指定する(例「"a/miku*"」)と、ヒットはするみたいですが、変数に入るのは「検索するパス + "\" + 見つかったファイルのファイル名部分」です。
o 実行するコマンド = DO の後に書きます。
    + 複数並べたい時は、丸括弧(= 小括弧)で括る事も出来ます。
        + 括弧内で「環境変数を設定し、その値を参照する」時には、小技が必要になります。
        + 詳しくは、「バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    + 大掛かりになる時は、CALL文が便利です。
    + 変数の使い方については、こちらをどうぞ
        + 「%変数の使い方
        + 「環境変数の使い方。置換と部分文字列


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = このコマンドは、ERRORLEVELの値を更新しません。
    + 但し、FOR の中で実行するコマンドが ERRORLEVELの値を更新する事があります。
    + 「(ミクさん) の使い方が誤っています。」 = 括弧の前に IN が抜けています。


**** 使用例
o コマンドプロンプト画面で動かす時の書き方
--------
@echo off
for /r c:\ミクさん\ネギ料理 %f in (*の作り方.txt) do echo ミクさんの料理メモ : %f

for /d /r c:\ミクさん %f in (*料理*) do echo ミクさんの料理フォルダー : %f
echo on
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + /R コマンドだけ指定した時は、指定したファイルを探します。
    + /D /R を指定すると、指定したフォルダーを探します。
    + どちらも、ワイルドカードが付いていますので、実在するものを探します。

o バッチファイルで動かす時の書き方
--------
@echo off
for /r c:\ミクさん %%f in (ネギ料理\*の作り方.txt) do echo ミクさんの料理メモ : %%f
for /d /r c:\ミクさん %f in (*料理*) do echo ミクさんの料理フォルダー : %f
--------

    + 変数名の前に「%」を2つ付けます。


**** 機能
o ワイルドカード(「*」や「?」)を使ったパスを指定すると、「検索するパス」の下層にあるファイルを探して繰り返します。
    + 見つけたフォルダーのファイルは、変数の中に入れます。
    + 見つかったファイルのパスを、変数の中に入れます。
o ワイルドカードを使わない場合、単なる文字列として、「検索するパス」の下層にあるフォルダー毎に1回ずつ実行します。
    + 「検索するパス + "\" + 指定した文字列」を、変数の中に入れます。
o 空白やカンマで区切ると、複数のパス(もしくは文字列)を指定する事が出来ます。
o 「検索するファイル名」の中に空白やカンマを含めたい時は、ワイルドカードを使用して、かつ、「"」でパスを括ります。


**** メモ
o ワイルドカード使用時、隠しファイル属性を持つファイルは、検索対象から除外されます。
o ワイルドカードを使わない時の動作は、ファイル名部分は単なる文字列渡しです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼FOR = 繰り返し実行する
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FOR /F + DIR /B = ファイル名を順番に取り出して実行する方法
    FOR /F その1 = ファイルを1行ずつ取り出して実行する
    FOR /F その2 = コマンド実行結果を1行ずつ取り出して実行する
(2011年5月16日追加と訂正。書式欄の変数名。大文字小文字を区別する。推奨は英字のみ)
(2011年3月6日変更。パスの表記を、なるべくファイル名に変更)