[前の記事]« SET /Aで0詰め2桁の日付が8進数として扱われてしまう問題への対処
[次の記事]1週間更新されていないファイルの削除 »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FOR .. IN ( ) DO..」索引へ

FOR文で全角文字を含む環境変数が削られてしまう

138.
forコマンドの実行結果を環境変数にsetする
2004年12月09日(木) 13時18分
いち
●DOS/Windowsのバージョン↓
Windows2000

(以下ご自由に質問文をお書きください)
2つバッチファイルを作成しました。
  1.echo aiueo    と記載しただけのバッチファイル
  2.1番のバッチファイルを呼び出して,環境変数に格納するバッチファイル

2を実行すると、バッチファイルが探せないとなってしまいます。
どなたか,知恵をご教授して下さい。
よろしくお願いします。

バッチファイルは,以下の様に定義しています。

1.
@echo aiueo

2.
@set Path_1=c:\あああ
for /f "delims=" %%i in ('"%Path_1%\test.bat"') do set AIUEO=%%i
@echo AIUEO == %AIUEO%

上記のみです。
ちなみに、2番のバッチファイルでsetしている場所が全角文字のため
問題が発生しているようですが、
「c:\あああ」 → 「c:\あああああ」と変更すると問題なく動作します。
MSDN等も調べたのですが、Microsoftからはバグ報告もされていなかったです。

実行結果は以下です。
「c:\あああ」の場合
D:\>for /F "delims=" %i in ('"c:\あああ\test.bat"') do set AIUEO=%i
'c:\あああ\test.b' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
AIUEO == 

「c:\あああああ」の場合
D:\>for /F "delims=" %i in ('"c:\あああああ\test.bat"') do set AIUEO=%i

D:\>set AIUEO=aiueo
AIUEO == aiueo

結果を見ていると、3文字の全角文字を含むと,実行パスから2文字削られているようです。
困り果てています。。。何か分かるかたいらっしゃれば,よろしくお願いします。
140.
Re:forコマンドの実行結果を環境変数にsetする
2004年12月09日(木) 16時56分
じゃく
>●DOS/Windowsのバージョン↓
>Windows2000

(省略)

>結果を見ていると、3文字の全角文字を含むと,実行パスから2文字削られているようです。
>困り果てています。。。何か分かるかたいらっしゃれば,よろしくお願いします。

過去ログでooさん(現otnさん)が検証されていますが、
for文のバグのようです。
回避策も過去ログに記載されています。

http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/for_in_do/3-0471.html
141.
Re:forコマンドの実行結果を環境変数にsetする
2004年12月09日(木) 17時22分
otn
>●DOS/Windowsのバージョン↓
>Windows2000

>(以下ご自由に質問文をお書きください)
>2つバッチファイルを作成しました。
>  1.echo aiueo    と記載しただけのバッチファイル
>  2.1番のバッチファイルを呼び出して,環境変数に格納するバッチファイル

>2を実行すると、バッチファイルが探せないとなってしまいます。
>どなたか,知恵をご教授して下さい。
>よろしくお願いします。

>バッチファイルは,以下の様に定義しています。

>1.
>@echo aiueo

>2.
>@set Path_1=c:\あああ
>for /f "delims=" %%i in ('"%Path_1%\test.bat"') do set AIUEO=%%i
>@echo AIUEO == %AIUEO%

>上記のみです。
>ちなみに、2番のバッチファイルでsetしている場所が全角文字のため
>問題が発生しているようですが、
>「c:\あああ」 → 「c:\あああああ」と変更すると問題なく動作します。

過去に同じような件が出ています。
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/for_in_do/3-0471.html

>結果を見ていると、3文字の全角文字を含むと,実行パスから2文字削られているようです。

末尾の"も削られますから3文字です。

>MSDN等も調べたのですが、Microsoftからはバグ報告もされていなかったです。
そうなんですか。WinXPでは直っているので既知のバグだとは思います。

「あああああ」でうまく行くのは、 「.bat"」 の5文字が削られて、「"c:\あああああ\test」 になるからですね。

上記の件の時に書きましたが、全角文字数が不定なら
for /f "delims=" %%i in ('"%Path_1%\test.bat"^|findstr /v aaaaaaaaaaaaaaaaaaaaa') do set AIUEO=%%i
のような方法しかないと思います。
142.
Re2:forコマンドの実行結果を環境変数にsetする
2004年12月09日(木) 17時30分
otn
おっと過去ログを探している間にかぶっちゃいましたね。
キーワードを思い出せないと探し方が難しい。

>(省略)

>>結果を見ていると、3文字の全角文字を含むと,実行パスから2文字削られているようです。
>>困り果てています。。。何か分かるかたいらっしゃれば,よろしくお願いします。

>過去ログでooさん(現otnさん)が検証されていますが、
>for文のバグのようです。
>回避策も過去ログに記載されています。

http://bbso1.nifty.com/nbbin/nb_wrentC_list/fpcu_bbso-005/wr_add=6086/wr_page=1/wr_sq=04051911462206010146
143.
Re2:forコマンドの実行結果を環境変数にsetする
2004年12月09日(木) 18時21分
じゃく
>>●DOS/Windowsのバージョン↓
>>Windows2000
>>
>>(以下ご自由に質問文をお書きください)
>>2つバッチファイルを作成しました。
>>  1.echo aiueo    と記載しただけのバッチファイル
>>  2.1番のバッチファイルを呼び出して,環境変数に格納するバッチファイル
>>
>>2を実行すると、バッチファイルが探せないとなってしまいます。
>>どなたか,知恵をご教授して下さい。
>>よろしくお願いします。
>>
>>バッチファイルは,以下の様に定義しています。
>>
>>1.
>>@echo aiueo
>>
>>2.
>>@set Path_1=c:\あああ
>>for /f "delims=" %%i in ('"%Path_1%\test.bat"') do set AIUEO=%%i
>>@echo AIUEO == %AIUEO%
>>
>>上記のみです。
>>ちなみに、2番のバッチファイルでsetしている場所が全角文字のため
>>問題が発生しているようですが、
>>「c:\あああ」 → 「c:\あああああ」と変更すると問題なく動作します。

>過去に同じような件が出ています。
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/for_in_do/3-0471.html

>>結果を見ていると、3文字の全角文字を含むと,実行パスから2文字削られているようです。

>末尾の"も削られますから3文字です。

>>MSDN等も調べたのですが、Microsoftからはバグ報告もされていなかったです。
>そうなんですか。WinXPでは直っているので既知のバグだとは思います。

>「あああああ」でうまく行くのは、 「.bat"」 の5文字が削られて、「"c:\あああああ\test」 になるからですね。

>上記の件の時に書きましたが、全角文字数が不定なら
>for /f "delims=" %%i in ('"%Path_1%\test.bat"^|findstr /v aaaaaaaaaaaaaaaaaaaaa') do set AIUEO=%%i
>のような方法しかないと思います。


今回の場合バッチの呼び出しなので、pushd/popd による
カレントディレクトリの移動で回避されてはいかがでしょう。

@set Path_1=c:\あああ
pushd "%Path_1%"
for /f "delims=" %%i in ('test.bat') do set AIUEO=%%i
popd
@echo AIUEO == %AIUEO%
144.
Re3:forコマンドの実行結果を環境変数にsetする
2004年12月09日(木) 18時46分
いち
じゃくさん、otnさん

ありがとうございました。
回避方法まで提示して頂いて。
助かりました。

過去ログ。。。たしかに難しいですね。
もっとトライするようにします。

>>>●DOS/Windowsのバージョン↓
>>>Windows2000
>>>
>>>(以下ご自由に質問文をお書きください)
>>>2つバッチファイルを作成しました。
>>>  1.echo aiueo    と記載しただけのバッチファイル
>>>  2.1番のバッチファイルを呼び出して,環境変数に格納するバッチファイル
>>>
>>>2を実行すると、バッチファイルが探せないとなってしまいます。
>>>どなたか,知恵をご教授して下さい。
>>>よろしくお願いします。
>>>
>>>バッチファイルは,以下の様に定義しています。
>>>
>>>1.
>>>@echo aiueo
>>>
>>>2.
>>>@set Path_1=c:\あああ
>>>for /f "delims=" %%i in ('"%Path_1%\test.bat"') do set AIUEO=%%i
>>>@echo AIUEO == %AIUEO%
>>>
>>>上記のみです。
>>>ちなみに、2番のバッチファイルでsetしている場所が全角文字のため
>>>問題が発生しているようですが、
>>>「c:\あああ」 → 「c:\あああああ」と変更すると問題なく動作します。
>>
>>過去に同じような件が出ています。
>>http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/for_in_do/3-0471.html
>>
>>>結果を見ていると、3文字の全角文字を含むと,実行パスから2文字削られているようです。
>>
>>末尾の"も削られますから3文字です。
>>
>>>MSDN等も調べたのですが、Microsoftからはバグ報告もされていなかったです。
>>そうなんですか。WinXPでは直っているので既知のバグだとは思います。
>>
>>「あああああ」でうまく行くのは、 「.bat"」 の5文字が削られて、「"c:\あああああ\test」 になるからですね。
>>
>>上記の件の時に書きましたが、全角文字数が不定なら
>>for /f "delims=" %%i in ('"%Path_1%\test.bat"^|findstr /v aaaaaaaaaaaaaaaaaaaaa') do set AIUEO=%%i
>>のような方法しかないと思います。
>>

>今回の場合バッチの呼び出しなので、pushd/popd による
>カレントディレクトリの移動で回避されてはいかがでしょう。

>@set Path_1=c:\あああ
>pushd "%Path_1%"
>for /f "delims=" %%i in ('test.bat') do set AIUEO=%%i
>popd
>@echo AIUEO == %AIUEO%

 

138.forコマンドの実行結果を環境変数にsetする いち 04/12/09(木) 13:18
140.Re:forコマンドの実行結果を環境変数にsetする じゃく 04/12/09(木) 16:56
142.Re2:forコマンドの実行結果を環境変数にsetする otn 04/12/09(木) 17:30
141.Re:forコマンドの実行結果を環境変数にsetする otn 04/12/09(木) 17:22
143.Re2:forコマンドの実行結果を環境変数にsetする じゃく 04/12/09(木) 18:21
144.Re3:forコマンドの実行結果を環境変数にsetする いち 04/12/09(木) 18:46

 
 


カテゴリー「FOR .. IN ( ) DO..」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年12月09日 12:16に投稿されたエントリーのページです。

ひとつ前の投稿は「SET /Aで0詰め2桁の日付が8進数として扱われてしまう問題への対処」です。

次の投稿は「1週間更新されていないファイルの削除」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート