%変数の使い方 - Windowsのコマンドプロンプト(bat,cmd)
○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 |
$環境変数名: | フルパス | (環境変数に書いたパスも検索します) |
s | 8.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つ。$環境変数の使用条件を訂正)