VBでDOSコマンドを続けて入力するには?


TAK  2007-05-05 06:11:46  No: 136314

はじめましてTAKといいます。

Visual BasicでDOSコマンドを操作する方法は過去ログでもいろいろ出ていますが、
自分がやりたいことと少し違うので教えてください。

①方法はいろいろあると思いますがShell関数等でDOS窓開く。
②開いたDOS窓にDOSコマンドを渡して操作。
③処理が終わったら次のDOSコマンド渡す。

というようなことが行いたいのですが、最初にDOS窓開くときに
-------------------------------------------------------------------
Dim WshShell As Object

WshShell = CreateObject("Wscript.Shell")
WshShell.Run(Environ("ComSpec") & " /k ""e:", 5, False)
-------------------------------------------------------------------
このようにすれば最初の起動時にはコマンドライン引数を渡すことは可能ですが、

その後上記コードで開いたDOS窓に続けてDOSコマンドを投げたいのですが
いまいちやり方がわかりません。

ご教授お願いしますm(__)m

それと1番下のコードを↓の用に変更するとディレクトリが移動しません、
システムドライブ(C:)だと問題なく、外付けの別HDドライブ(E:)に移動しようとするとうまくいきません。
WshShell.Run(Environ("ComSpec") & " /k ""e:""cd e:\aaa", 5, False)


ほり  2007-05-05 09:14:36  No: 136315

>いまいちやり方がわかりません。

SendKey じゃないの?

>ディレクトリが移動しません、

カレントドライブを移動してないからでは?
プロンプトで同じことをやってみればわかります。


魔界の仮面弁士  2007-05-05 15:23:18  No: 136316

こんな感じで。(VB2005)

Using p As New System.Diagnostics.Process()
  p.StartInfo.FileName = "cmd.exe"
  p.StartInfo.CreateNoWindow = True
  p.StartInfo.UseShellExecute = False
  p.StartInfo.RedirectStandardInput = True
  'p.StartInfo.RedirectStandardOutput = True
  p.Start()

  p.StandardInput.WriteLine("C:")
  p.StandardInput.WriteLine("CD \")
  p.StandardInput.WriteLine("MD sample")

  p.Close()
End Using
とか。


TAK  2007-05-06 21:28:14  No: 136317

>魔界の仮面弁士さん
レスありがとうございます。

最初に回答と似たような感じで作っていたのですがいまいちわからなかったので
WSHでやったのですが、これもよくわからずというところでした(^^ゞ

魔界の仮面弁士さんのやり方でできるのですが
DOS窓の表示、非表示はどうやるんですか?

送るDOSコマンドに"/k"を入れてみたりしたんですがうまくいきません、よろしくお願いしますm(__)m


KG  2007-05-07 21:31:36  No: 136318

横から失礼します。

StartInfoにWindowStyleプロパティがあったかと思いますが。
それでは出来ませんでしょうか。


TAK  2007-05-08 08:05:22  No: 136319

>KGさん
WindowStyleプロバティは規定値がnomalですし、明示的に設定しましたが
かわらなかったです


魔界の仮面弁士  2007-05-08 08:40:13  No: 136320

# DOS プロンプト と コマンド プロンプト は、微妙に別物だったり。

> DOS窓の表示、非表示はどうやるんですか?

ん? 標準出力を受け取ることもできるのですから、それを
ListBox なり TextBox なりに表示してやれば良いのでは。

もし、標準のコマンドプロンプト画面の中で処理したいのなら、
VB 側をコンソールアプリにすれば良いのかな、と。

'==== C:\Test\X.vb =====
Imports System
Imports System.IO
Imports System.Text
Class X
  Shared Sub Main()
    Using S As New StreamWriter(Console.OpenStandardOutput(), Encoding.Default)
      S.WriteLine("C:")
      S.WriteLine("CD \")
      S.WriteLine("MD sample2")
      S.Close()
    End Using
  End Sub
End Class

'==== コンパイル ====
VBC C:\test\X.vb /OUT:C:\test\X.exe

'==== コマンド プロンプト ====
C:\test\X.exe | cmd.exe


スクリプトプログラマ  2007-05-19 04:48:11  No: 136321

CreateNoWindowプロパティは?


TKC  2008-03-02 09:21:53  No: 136322

これ、VCでも同じことできますか?


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加