VB.NETでバッチファイルを使わずにDOSコマンドの複数実行をしたいのですが、
試しに
Dim results As String
'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
'出力を読み取れるようにする
psi.RedirectStandardInput = False
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
'ウィンドウを表示しないようにする
psi.CreateNoWindow = True
'コマンドラインを指定("/c"は実行後閉じるために必要)
'psi.Arguments = "/c " & asCmd & " /w"
psi.Arguments = "/c " & "CD C:\" & " /w"
'起動
p = System.Diagnostics.Process.Start(psi)
'出力を読み取る
results = p.StandardOutput.ReadToEnd
'出力された結果を表示
Console.WriteLine(results)
psi.Arguments = "/c " & "DIR" & " /w"
'起動
p = System.Diagnostics.Process.Start(psi)
'出力を読み取る
results = p.StandardOutput.ReadToEnd
'出力された結果を表示
Console.WriteLine(results)
'WaitForExitはReadToEndの後である必要がある
'(親プロセス、子プロセスでブロック防止のため)
p.WaitForExit()
というプログラムを作成したのですが、DIRは実行されるのですが、
Cドライブに移動ができません。
何が悪いのでしょうか?
実現できる方法があればご教授ください。
No.1ベストアンサー
- 回答日時:
原因は最初に起動したプロセスが CD C:\ を実行して終了してしまうためです
2度目のに起動された cmd.exe(またはcommand.com)は初期状態で起動されてしまいます
したがってDIRコマンドは意図したフォルダーで実行されません
DOSコマンドを複数実行したいなら &&でつなぎましょう
psi.Arguments = "/c " & "CD C:\" & " && dir /w"
といった具合です
デバッグ段階では
psi.CreateNoWindow = False
のようにドス窓を表示するようにしていた方がいいように思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- スポーツサイクル フレンチバルブの空気入れについて 4 2023/07/03 17:22
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VB.NETでのDOSコマンドを実行について
Visual Basic(VBA)
-
VB.NETでコマンドプロンプトの操作
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
C# Process.Startメソッドで複数引数を渡したい
その他(プログラミング・Web制作)
-
5
VBプログラムから「管理者として実行」したい
Visual Basic(VBA)
-
6
コマンドプロンプトを指定のディレクトリで開く
Visual Basic(VBA)
-
7
VBフォームアプリケーションにおけるcmdプロンプトの実行
Visual Basic(VBA)
-
8
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
9
Viewにインデックスは張れますか?
Oracle
-
10
オブジェクト参照がオブジェクト インスタンスに設定されていません というエラーについて
Microsoft ASP
-
11
ワークテーブルの作成について
Visual Basic(VBA)
-
12
C#でのbatファイル実行結果取得
その他(プログラミング・Web制作)
-
13
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
14
VB.NETでのDOSコマンドを実行について
Visual Basic(VBA)
-
15
c#でコマンドプロンプトを実行する方法
その他(プログラミング・Web制作)
-
16
コマンドプロンプト実行後に画面を閉じない方法
Visual Basic(VBA)
-
17
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
-
18
配列の重複する値とその個数を取得したい
Visual Basic(VBA)
-
19
[VB.net] DataGridViewの列ヘッダー複数行表示に伴う不具合?について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
バッチファイル 特定ウインドウ...
-
VB.NETでDOSコマンドの複数実行
-
stable diffusionのインストー...
-
バッチファイルでAPを終了さ...
-
[バッチファイル]InternetExplo...
-
バッチファイル実行時に起動す...
-
プログラムを実行すると、なぜ...
-
xampp1.7.4のApacheが起動しない
-
c#でコマンドプロンプトを実行...
-
Visual basic6.0からショートカ...
-
Market Speed をVBAで制御した...
-
キー自動入力のサンプルコード...
-
バッチファイルにて複数のプロ...
-
CreateProcessでEXEを起動させ...
-
VBSでコマンドプロンプトのカレ...
-
Yahooの検索で他の検索窓が...
-
ショートカットの作成とコピー
-
指定したアプリケーションをモ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
stable diffusionのインストー...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
ショートカットの作成とコピー
-
バッチファイル実行時に起動す...
-
VB.NETでDOSコマンドの複数実行
-
プログラムを実行すると、なぜ...
-
exe間での引き値の受け取り方法
-
64bitのwindowsサーバーで32bit...
-
batファイルで立ち上げたaplを...
-
c#でコマンドプロンプトを実行...
-
UWSCについて
-
Shiftキーを押しながら起動
-
gccがコマンドプロンプト上で使...
-
C#でMediaPlayerを立ち上げた後
-
VB.NETでコマンドプロンプトの操作
-
指定したアプリケーションをモ...
-
バッチファイルでAPを終了さ...
-
相対パスのショートカットフォ...
おすすめ情報