また、こちらを使わせていただきます。
VC++で.batファイルを起動しようとしていますが、cmdはあくのですが、.batが起動しません。他の参考にしてますが、なかなかたどり着きません。どなたか、アドバイスお願いいたします。
.bat fileは次のとおりです。
cd\Program Files\Wireshark>
tshark -i.2 greater 170 -a duration:2 -w....
tshark -v-r e:\Test\test5.pcap....
VC++は次のとおり
void CStartupapplicationView::OnBnClickedButtontest()
{
//cmdは、ShellExecuteでも、CreateProcessでも開けられますが、
//bat fileの起動がうまくいきません。
HINSTANCE ret = ShellExecute(m_hWnd,"open","cmd.exe",NULL,"c:\\Program Files\\Wireshark",SW_SHOWNORMAL);
ShellExecute(m_hWnd,"open","c:Program Files\\Wireshark\\test.bat",SW_SHOW);
//.batファイルは、c:Program Files\Wiresharkの下に入っています。//が、.Batは起動しません。
if (ret <= (HINSTANCE)32) AfxMessageBox("can not Shell.",MB_OK);
//別の方法
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
ZeroMemory(&sinfo,sizeof(STARTUPINFO));
ZeroMemory(&pinfo,sizeof(PROCESS_INFORMATION));
sinfo.cb=sizeof (STARTUPINFO);
sinfo.dwFlags=STARTF_USESHOWWINDOW;
sinfo.wShowWindow=SW_SHOWNORMAL;
if(!CreateProcess(NULL,_T("cmd.exe c:\\test2.bat "),
// test2.batは、Document and settings/-----------
//Startup applicationの下にはいっていますが、起動しません。
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&sinfo,
&pinfo));
{//起動失敗
}
//
No.7ベストアンサー
- 回答日時:
コマンド受け渡しの根本を理解されていないのが原因です
(#4に書きましたがフォルダにスペース名が入っているのが原因です)
コマンドラインでコマンドを打つときはスペースを区切りとして文字が分断されます
例) プログラム sample.exe として バラメータに
C:\Program Files と渡したしたいとしましょう
コマンドで sample c:\Program Files と打つと
sample.exeには c:\Program と Files という2個のパラメータが送られるのです
これをスペース含めた1個のパラメータとして渡したい場合
コマンドで sample "c:\Program Files" のようにスペース含む部分を " で囲う必要があるのです
上がちゃんと理解できていれば私が #4/#5 で書いたコードの意味と
御自身で書いたコードが思ったように動かない理由が分かることでしょう
あえてひょっとしたら知らないかな と思うのが
Cの場合 "" で囲った中に " を含みたいときは \" と記載します
ってことです
後は御自分でお考えください
(これ以上の説明は出来ないので以後こちらが補足することはありません)
いつも回答ありがとう御座います。
根本を理解してないとご指摘いただきましたので、再度ShellExecuteの定義を読みました。定義どおりに、(m_hWnd,”open”、バッチファイル名、NULL,Directory,SW_SHOW)としましたら、.batを起動することが、できました。ありがとう御座います。
No.6
- 回答日時:
たびたびすいません
#4でも#5でも動くはずです(実行コマンド変えてた)
#4はdos窓開いてバッチファイル実行 終了後はdos窓も消える
$5はdos窓開いてcmd実行した上でバッチファイル実行して其のまま終了
cmd実行した状態で終了するためdos窓が開きっぱなしになります
(/K オプションつけてるから)
適当に変えてください
コマンドの意味はDOS窓で cmd /? と打って御自分で確認してください
いつも回答ありがとうございます。
教えていただいたやり方で、バッチファイルが起動されたというのですが、やってみますと、実行すべきDirectry C:\Program Files\Wiresharkに切り替わらず、バッチの中身だけが、VC++のdirectoryにぶら下がる形になります。ちなみにプログラムを流すと、
以下の用になります。
C:Documents and Settings\Administrator\MYDocuments\Visual Studio 2008\Progects\Start up application\Start up application>
tshark...........
コード(NO1)は以下のようです。
void CStartupapplicationView::OnBnClickedButtontest()
{
ShellExecute(m_hWnd,"open","cmd","/K\"c:\\Program Files\\Wireshark\\test.bat\"",NULL,SW_SHOWNORMAL);
先にも書きましたが、以下のコードでは、cmd上で、directoryは
c:Program Files\Wireshark>に変わります。ここで、バッチを流したいのですが、これができないます。
ShellExecute(m_hWnd,"open","cmd.exe",NULL,"c:\\Program Files\\Wireshark",SW_SHOWNORMAL);
さて最初のコード(NO1)でバッチファイルにcd\Program Files\Wireshark\\tshark.....とcd\Program Filesをつけると、その部分が、
C:Documents and Settings\Administrator\MYDocuments\Visual Studio 2008\Progects\Start up application\Start up application>
cd\Program Files\Wireshark\\tshark.....となってしまいます。
cmd上で、必要なdirectoryになりません。 少しまいっています。
コメントいただけると助かります。
No.5
- 回答日時:
ごめん 書き間違えた
ShellExecute(m_hWnd,"open","cmd", "/K \"c:\\Program Files\\Wireshark\\test.bat\"",NULL,SW_SHOW);
です
No.4
- 回答日時:
すいません確認が甘かった
原因はフォルダ名にスペースが入っているためです
スペース文字をフォルダ名として認識させるために
ShellExecute(m_hWnd,"open","\"c:\\Program Files\\Wireshark\\test.bat\"",NULL,NULL,SW_SHOW);
としてください
No.3
- 回答日時:
真面目に見てみました
>ShellExecute(m_hWnd,"open","c:Program Files\\Wireshark\\test.bat",SW_SHOW);
これパラメータが足りなくないですか?
ShellExecute(m_hWnd,"open","c:\\Program Files\\Wireshark\\test.bat",NULL,NULL,SW_SHOW);
ではないかと思いますが
※ コンパイル時間にもよりますがDOS窓が直ぐ閉じるためやってないように見えるかもしれません
(動いていないというのはどうやって確認されていますか?)
また#1さんの書かれた/C /Kはcmd.exeのパラメータですので定義などは必要ありません
もしやるのであれば
ShellExecute(m_hWnd,"open","cmd", "/K c:\\Program Files\\Wireshark\\test.bat",NULL,SW_SHOW);
としてみてくださいそれで動くはずです
(動かしたバッチファイルは違いますがこちらではそれで動いています XP SP3 + VC6)
早速回答ありがとうございます。
ShellExecute(m_hWnd,"open","cmd","/K c:\\Program Files\\Wireshark\\test2.bat",NULL,SW_SHOW);
にして見ましたが、
DOS画面上で、'c:\Program'は内部コマンドまたは外部コマンド操作可能なプログラムまたはバッチファイルと認識されていないと’
と表示され、
c:\Document and Settings........の画面になります。
少なくとも、c:\Program Files\\Wireshark>test.batを動かしますと
test.batは起動いたします。
どうしてか、わかりません。
XP SP3 VC++ 2008
No.1
- 回答日時:
CMD.EXE /C "C:\\Program Files\\Wireshark\\Test.bat"
"
または
CMD.EXE /K "C:\\Program Files\\Wireshark\\Test.bat"
のような感じで実行すれば良いと思います。
ShellExecuteを使用する場合は
CMD.EXE /C
CMD.EXE /K
の部分はなくても実行できるのではないかと思いますが、実行後、コマンドプロンプト画面を閉じたくない場合は
CMD.EXE /K
を使用するとよいと思います。
早速ありがとうございます。但し、ビルトすると、CとKを定義されて無いとしてエラーになります。この、C,Kはどこかで定義が必要ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- その他(Microsoft Office) Office(Windows版,Word/Excel/PowerPoint等)にログインできません 4 2022/07/24 15:18
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
ShellExecuteでDOSコマンド実行したら...
C言語・C++・C#
-
VC++から引数付きexeファイルの実行
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
-
4
Visual C++からpingを実行してその結果を得る方法
C言語・C++・C#
-
5
charからLPTSTRへの変換方法
C言語・C++・C#
-
6
VC++でUTF-8のファイルを出力したい
C言語・C++・C#
-
7
char*を初期化したいのですが
C言語・C++・C#
-
8
Visual C++からftpを使う
C言語・C++・C#
-
9
CStringについて
C言語・C++・C#
-
10
実行時のコマンドプロンプトを非表示 Visual C++
C言語・C++・C#
-
11
system関数がうまくいかない
C言語・C++・C#
-
12
コンボボックスでデフォルト値の設定
C言語・C++・C#
-
13
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
14
LPSTR型の初期化について
C言語・C++・C#
-
15
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
16
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
17
VC++での外部ファイル(batファイル)の実行
C言語・C++・C#
-
18
VC++スレッドの正しい終了のさせかた
C言語・C++・C#
-
19
VC++での外部プログラムの実行
C言語・C++・C#
-
20
CString から LPCTSTRの型に変換
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Stuck
-
Notepad++の関数リスト表示の変...
-
どちのほうがすきですか?
-
擬似コード 長さがmの配列でな...
-
こんなことてしますか??
-
C言語って古いですか?
-
gcc13.2のバグ?
-
C言語について
-
バッファリングについて。
-
C言語 列挙型(enum型)変数について
-
C言語初心者 ポインタについて...
-
卒業研究でよく分からないとこ...
-
scipy っていうのをいれようと...
-
パイソンの
-
VisualStudio2022でC言語プログ...
-
擬似コード
-
あなたは、Excelはどうやって学...
-
pythonの質問です。
-
プログラミングについての質問...
-
chatgptでつくってもらったコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MACで動く実行ファイルをWindow...
-
VisualStudioで、コードを印刷...
-
c言語
-
c言語
-
大量のデータを読み込んで表示...
-
C言語の関数と配列に関する質問
-
win10で、正確な待ち時間の作り方
-
Linuxでの開発環境構築や設定の...
-
C言語 バッファについて。
-
これなにがちがうんですか??
-
C++6.0でのresource.hについて
-
トリプトファンってケト原性あ...
-
c#のTLS1.2での通信について
-
C++でデスクトップGUIアプリ開...
-
Windows Formアプリからコンソ...
-
LinuxカーネルのCFSで用いられ...
-
「using Windows」でエラーが出る
-
C言語初心者 ポインタについて...
-
Bitcoin、BTCはブロックチェー...
-
C言語初心者 構造体 課題について
おすすめ情報