プロが教えるわが家の防犯対策術!

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
 環境: VB2008 Express Edition + Win7(もしくはVistaもしくはXP)  でございます。

 VBからコマンドプロンプト(あまり使い方を存じません)を操作できているかどうか
テストする為に、下記のように操作させてみましたがうまくいきません。。
  ・Debugフォルダにコマンドプロンプトを起動
   →コマンドプロンプトの内容表示(←成功)

  ・Debugフォルダにコマンドプロンプトを起動
   →「cd ../ 」
   →コマンドプロンプトの内容表示(←何故か何も表示されません。)


 http://soudan1.biglobe.ne.jp/qa5873147.html
を参考にさせていただいて、コーディングいたしました↓

  Dim psi As New System.Diagnostics.ProcessStartInfo()
  psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
  psi.RedirectStandardInput = False '出力を読み取れるようにする
  psi.RedirectStandardOutput = True
  psi.UseShellExecute = False
  psi.CreateNoWindow = True 'ウィンドウを表示しないようにする

   'コマンドラインを指定
  psi.Arguments = "/c cd ../"  '←ここです。

  Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi) '起動
  Threading.Thread.Sleep(1000)
  Do
    results = p.StandardOutput.ReadLine
    temp = temp & results
    Application.DoEvents()
    cnt = cnt + 1
  Loop Until cnt = 1000

  p.WaitForExit()
  MsgBox(temp)

 最後のMsgBoxに何も文字が表示されません。。。
 コード中の「ここです」の行をコメントアウトいたしますと、最後のMsgBoxに
「Microsoft Windows XP ~D:\~bin\Debug>」
とフォルダ名が表示できます。
 psi.Arguments = "/c cd ../" がちゃんと送れていないのでございましょうか??
 色々と試行錯誤しておりますが、うまくいきません。
試しにpsi.CreateNoWindow = False などとしてみても一瞬で画面が消えてしまうため
うまくバグ取りの打開策が見いだせておりません。
 もしお詳しい方がいらっしゃいましたら是非ともアドバイスいただけないでしょうか。
どうぞよろしくお願いいたします。

A 回答 (1件)

CMDのヘルプとかをよく読みましょう。



/C は「以降に書かれたものをコマンドとして実行して終了する」オプションです。
この例では、 CMD起動→cd .. を実行→終了 となっています。
そのままコマンドプロンプトを継続するなら /K ではないでしょうか。

これに限らず、他のコマンドを実行させるなら、そのコマンドのマニュアルを良く読みましょう。
    • good
    • 0
この回答へのお礼

 どうもありがとうございます!!m(_ _)m
 解決いたしました。Googleで「コマンドプロンプト "/C"」などと
検索いたしましても「/」が検索結果にひっかかってくれず
かなり長い間悩みました。。。orz
 今から徹底的に探してまいります。
この度はご親切にご閲覧・アドバイスくださって誠にありがとうございました!!^^

お礼日時:2011/03/01 22:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!