
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プログラムから「管理者として実行」したい
Visual Basic(VBA)
-
-
4
C# Process.Startメソッドで複数引数を渡したい
その他(プログラミング・Web制作)
-
5
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
-
6
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
7
「発行元を確認できませんでした…」と表示される
その他(ソフトウェア)
-
8
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
9
VB.net でトグルボタンを実現したい
Visual Basic(VBA)
-
10
ManagementClassが見つからない。
C言語・C++・C#
-
11
コマンドプロンプトを指定のディレクトリで開く
Visual Basic(VBA)
-
12
【VB.NET】exeを実行すると「発行元を確認できませんでした」
Visual Basic(VBA)
-
13
Ctrl + Cなど複数の入力キーの感知
Visual Basic(VBA)
-
14
VB.NETでのDOSコマンドを実行について
Visual Basic(VBA)
-
15
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
16
c#でコマンドプロンプトを実行する方法
その他(プログラミング・Web制作)
-
17
フォームを画面のど真ん中に表示させたいのですが
Visual Basic(VBA)
-
18
VB.netでメソッドからコントロールを取得
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAにてアプリをタスクマ...
-
PL/SQLで作成したストア...
-
バッチファイル エクセル起動
-
vbsのショートカット作成で、引...
-
指定したURLを表示させるバ...
-
バッチファイル 特定ウインドウ...
-
exe間での引き値の受け取り方法
-
VB.NETでコマンドプロンプトの操作
-
gccがコマンドプロンプト上で使...
-
batファイルで立ち上げたaplを...
-
winlogon.exeって?
-
EXCELをバッチコマンドで...
-
複数の処理の終了を待ちたい
-
UWSCについて
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
コマンドプロンプトの「%1」と...
-
バッチでテキストファイルから...
-
batからexeを実行し戻り値を受...
-
[teraterm] waitコマンドで停止...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
ショートカットの作成とコピー
-
batファイルで立ち上げたaplを...
-
VB.NETでDOSコマンドの複数実行
-
c#でコマンドプロンプトを実行...
-
UWSCについて
-
バッチファイルからftpを実行時...
-
VBAからキャッシュを削除する方...
-
Shiftキーを押しながら起動
-
バッチファイルでAPを終了さ...
-
64bitのwindowsサーバーで32bit...
-
ASPからのEXEファイル起動
-
stable diffusionのインストー...
-
バッチファイルでの時間差実行
-
exe間での引き値の受け取り方法
-
RUNASコマンドを使って、自動的...
-
バッチへ値を返す
-
複数の処理の終了を待ちたい
おすすめ情報