ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3969715 コマンドプロンプト 全角を含んだ文字列の抽出
質問者:indigo45kk ●ほしい文字列:
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
全角を含んでいると以降のスペース以下が取得できないようなのですが
全角の有無にかかわらず取得できる方法はないでしょうか?
宜しくお願いいたします。
困り度:
  • 暇なときにでも
質問投稿日時:
08/04/23 13:17
この質問に対する回答は締め切られました。
最新から表示回答順に表示

回答

ANo.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。
回答者:notnot
種類:回答
どんな人:専門家
自信:自信あり
回答日時:
08/04/24 00:03
この回答へのお礼reg queryにはバグなのですね。。。教えていただいた方法で全角文字も出力できました。しかし以下のように不要な文字("Dir"="・\・")まで含まれまれるため、断念します。。ありがとうございました!!

●ほしい文字列:
 C:\Program Files\全体\a b
●上記ケースfile2で得られる文字列
 "Dir"="C:\\Program Files\\全体\\a b"

回答

ANo.1 reg が動かなかったのでシミュレートしただけだけど, 手元の Windows XP Professional SP2 ではそんなことはないなぁ.
ちなみに %C には何が入ってますか?
回答者:Tacosan
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/04/23 13:57
この回答への補足%C とは何でしょうか?すみません。分かりません。
ちなみに、「a b」フォルダにファイルが存在するかどうかは関係ないようです。
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示