名前: トノ 日時: 2006-01-04 21:43:46 IPアドレス: 58.0.18.*
>>40356 本題からも、この掲示板の主旨からもはずれてしまうので申し訳ないのですが‥‥ 以下のようなバッチファイルで確かめてみました。 @echo off echo TEST 1 set env1=abcdefg set env2=12345678901234567890123456789012345678901234567890 set env1=%env2%%env2%%env2%%env2%%env2%%env2%%env2%%env2%%env2%%env2%%env2%%env2%%env1% echo env1=%env1% echo TEST 2 set env1=abcdefg set env1=%env2%%env1% set env1=%env2%%env1% set env1=%env2%%env1% set env1=%env2%%env1% set env1=%env2%%env1% set env1=%env2%%env1% set env1=%env2%%env1% echo env1=%env1% これを、 start c:\command.com /e:1024 /l:1024 /u:255 で開いたプロンプト(環境変数領域のサイズが 1024 バイトしかない)で実行すると、 G:\>testbat TEST 1 環境変数のための領域が足りません. env1=abcdefg TEST 2 環境変数のための領域が足りません. env1=123456789012345678901234567890123456789012345678901234567890123456789012345 67890123456789012345678901234567890123456789012345678901234567890123456789012345 67890123456789012345678901234567890123456789012345678901234567890123456789012345 67890123456789012345678901234567890123456789012345678901234567890abcdefg G:\> というようになります。最初の env1 の値である abcdefg は残っています。 一方、 start c:\command.com /e:4096 /l:128 /u:128 で開いたプロンプト(コマンドラインの長さ制限が 128 バイト)で実行すると、 G:\>testbat TEST 1 env1=123456789012345678901234567890123456789012345678901234567890123456789012345 6789012345678901234567890123456789012345678 TEST 2 env1=123456789012345678901234567890123456789012345678901234567890123456789012345 6789012345678901234567890123456789012345678 G:\> のようになります。こちらはもとの env1 の値は切り捨てられています。 テストした環境は Windows 98SE です。ただし、常駐ソフトをいろいろと組込んだり していますので、その影響が出ている可能性は排除しきれていません。 ちなみに、command /? でヘルプを表示させると、次のようになります。 (半角仮名が入っていましたので、全角に置替えてあります) G:\> command /? Windows コマンド インタープリタを新たに起動します. COMMAND [[ドライブ:]パス] [デバイス] [/E:nnnnn] [/L:nnnn] [/U:nnn] [/P] [/MSG] [/LOW] [/Y [/[C|K] コマンド]] [ドライブ:]パス COMMAND.COM ファイルの含まれているディレクトリを指定します. デバイス コマンドの入出力に使うデバイスを指定します. /E:nnnnn 環境変数領域の初期サイズを nnnnn バイトで設定します. (nnnnn は 256 から 32,768 の間でなければなりません.) /L:nnnn 内部バッファのサイズを指定します.(/P スイッチと共に使います.) (nnnn は 128 から 1,024 の間でなければなりません.) /U:nnn 入力バッファサイズを指定します.(/P スイッチと共に使います.) (nnn は 128 から 255 の間でなければなりません.) /P 新しいコマンド インタープリタを常駐させます.(終了できません.) /MSG メモリ内にすべてのエラーメッセージを記憶します.(/P スイッチと 共に使います.) /LOW COMMAND の常駐データを下位メモリに読み込みます. /Y /C か /K でバッチファイルを実行したときに 1 行ずつ確認します. /C コマンド 指定されたコマンドを実行し, 戻ります. /K コマンド 指定されたコマンドを実行し, そのまま戻りません.
この書き込みへの返事: