はじめまして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)
>いまいちやり方がわかりません。
SendKey じゃないの?
>ディレクトリが移動しません、
カレントドライブを移動してないからでは?
プロンプトで同じことをやってみればわかります。
こんな感じで。(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
とか。
>魔界の仮面弁士さん
レスありがとうございます。
最初に回答と似たような感じで作っていたのですがいまいちわからなかったので
WSHでやったのですが、これもよくわからずというところでした(^^ゞ
魔界の仮面弁士さんのやり方でできるのですが
DOS窓の表示、非表示はどうやるんですか?
送るDOSコマンドに"/k"を入れてみたりしたんですがうまくいきません、よろしくお願いしますm(__)m
横から失礼します。
StartInfoにWindowStyleプロパティがあったかと思いますが。
それでは出来ませんでしょうか。
>KGさん
WindowStyleプロバティは規定値がnomalですし、明示的に設定しましたが
かわらなかったです
# 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
CreateNoWindowプロパティは?
これ、VCでも同じことできますか?
ツイート | ![]() |