|
文太さんが熱心にやられているので簡単なファイル検索プログラムを書いてちょっと試してみました。
BC++5.02 で作成した 16bit 版の実行ファイルで XP上の "MS-DOSプロンプト"(CMD.EXE ではなく command.com を直接起動したもの)での実験結果では、
まさに、
>(例えば「p*」は「pqr.c」にはマッチしない)
が再現しました。
同じソースから作成した 32bit 版の実行ファイルではこのような挙動はなく、みなさんが書かれているような動作でした。
-----------------------
以下、既にご存じの部分もあるかも知れませんが・・・
1.Cコンパイラで作成した自作アプリの場合
コマンドライン引数に指定されたワイルドカードはそのままの文字列として実行ファイルに渡されます(註1)。
で、ワイルドカード(を含む文字列)を対象にした実際のファイル検索は、コンパイラ固有の関数(findfirst や _dos_findfirst)、あるいは WIN32API (FindFirstFile)を使って行われます。
ということは、引数に指定されたワイルドカードをアプリ側でどう扱うのか?はコンパイラ依存の部分もあるのではないと思うのです(きちんと検証した訳ではないのであくまで仮説です)。
(註1)LSI-C試食版の場合はちょっと違って、デフォルトの動作ではワイルドカードは展開された状態でアプリに渡されます。これを抑制するのには noexpand.obj をコンパイル時にリンクします。
2.OSの内部コマンド、付属外部コマンドの場合
おそらく 100% OSの仕様による、と言うところではないでしょうか(これもきちんと検証した訳ではありません)。
|
|