• 締切済み

コマンドプロンプト 全角を含んだ文字列の抽出

●ほしい文字列: C:\Program Files\全体\a b ●reg quaryの結果: ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\goo Dir REG_SZ C:\Program Files\本体\a b ●試したコマンド: for /f "skip=2 tokens=2*" %A in ('reg query %REGNAME% /v Dir') do echo %B ●結果:C:\Program Files\全体\a 全角を含んでいると以降のスペース以下が取得できないようなのですが 全角の有無にかかわらず取得できる方法はないでしょうか? 宜しくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

少なくともXPまでのreg queryにはバグがあり、全角文字を正しく処理できません(Vista未確認)。おそらく文字数計算を間違えている。 reg query キー名 > file とファイルに書いても駄目です。後ろが欠けます。 reg export キー名 file type file | findstr "なにか" > file2 for /f "tokens=?*" %A in (file2) do echo %B のようにしてfileを見てfindstrの文字列やtokensの数字を設定してください。 なお、fileはユニコードになるので、forやfindstrでは直接読めません。typeやfindならOK。

indigo45kk
質問者

お礼

reg queryにはバグなのですね。。。教えていただいた方法で全角文字も出力できました。しかし以下のように不要な文字("Dir"="・\・")まで含まれまれるため、断念します。。ありがとうございました!! ●ほしい文字列:  C:\Program Files\全体\a b ●上記ケースfile2で得られる文字列  "Dir"="C:\\Program Files\\全体\\a b"

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

reg が動かなかったのでシミュレートしただけだけど, 手元の Windows XP Professional SP2 ではそんなことはないなぁ. ちなみに %C には何が入ってますか?

indigo45kk
質問者

補足

%C とは何でしょうか?すみません。分かりません。 ちなみに、「a b」フォルダにファイルが存在するかどうかは関係ないようです。

関連するQ&A