お世話になります~♪

VBであるソフト(ツール)を作っています。
途中でボタンをクリックして「jikkou.bat」を実行したいと考えています。

可能なのでしょうか?また、どのようにしてやればいいでしょうか?

いろいろやってみましたが、うまくいかないんです。
宜しくお願いいたします。

A 回答 (2件)

メモ帳で


cd c:\windows
dir "c:\my documents"
calc
exit
を入力し、my documentsにaaa.batと名をつけ保存しました。
Private Sub CommandButton1_Click()
MsgBox "aaa実行"
Shell "c:\my documents\aaa.bat", vbNormalFocus
MsgBox "終了"
End Sub
を作り、ボタンをクリックしました。
実行され電卓が現われたりしました。
これでは良くご存知で質問するほどではないかと思うので、どの辺りにお困りですか。
    • good
    • 0

http://www7.plala.or.jp/imajo/ke/samp/samp06.html

このURLの一番下のサンプルが参考になると思います。
Shellという関数を利用します。
がんばってください。
    • good
    • 0

このQ&Aと関連する良く見られている質問

Qバッチファイルを用いてCOPY

バッチファイルを使用して、あるファイルAに入っているpdfファイルを別のファイルBにコピーする方法を教えて頂けませんか?(但し名称によっては2部だったり1部だったりです。)
Aファイル内の
PDF-1.pdfを1部
PDF-2.pdfを2部
PDF-3.pdfを3部
をBファイルにコピー
よろしくお願いします。

Aベストアンサー

テストしてませんが、こんな感じでしょうか。

pushd C:\folderA
set B=C:\folderB
for %%A in (PDF-*.pdf) do call :sub %%A
goto :EOF

:sub
set A=%1
set A=%A:.pdf=%
set N=%A:PDF-=%
for /L %%I in (1,1,%N%) do call :sub2
goto :EOF

:sub2
set C=%B%\%A%.pdf
if not exist %C% copy %A%.pdf %C% & goto :EOF
set C="%B%\%A% - コピー.pdf"
if not exist %C% copy %A%.pdf %C% & goto :EOF
set I=2
:loop
set C="%B%\%A% - コピー (%I%).pdf"
if not exist %C% copy %A%.pdf %C% & goto :EOF
set /a I+=1
goto loop

テストしてませんが、こんな感じでしょうか。

pushd C:\folderA
set B=C:\folderB
for %%A in (PDF-*.pdf) do call :sub %%A
goto :EOF

:sub
set A=%1
set A=%A:.pdf=%
set N=%A:PDF-=%
for /L %%I in (1,1,%N%) do call :sub2
goto :EOF

:sub2
set C=%B%\%A%.pdf
if not exist %C% copy %A%.pdf %C% & goto :EOF
set C="%B%\%A% - コピー.pdf"
if not exist %C% copy %A%.pdf %C% & goto :EOF
set I=2
:loop
set C="%B%\%A% - コピー (%I%).pdf"
if not exist %C% copy %A%.pdf %C% & g...続きを読む

QShell関数からバッチファイルを起動後に、バッチファイルが終了するまで待ちたい。

はじめまして。
掲題の通り、VB.netからshell関数を用いてバッチファイルを起動します。
その後、そのバッチファイルが終了してログファイルの出力を完了した後に、
ファイルを開いて確認したいのです。
thread.sleepなどで大体このくらいかなという時間を待ってみる、
などのやり方しか今は思いつかないのですが、
何か明確にバッチファイルの終了を受け取れる方法は無いものでしょうか。

どなたかご存知の方がいらっしゃいましたらご教授ください。

Aベストアンサー

Shell関数より Processクラスで実行したほうが簡単に待てますよ

Dim oPro as Process
oPro = Process.Start("..\..\a.bat")
oPro.WaitForExit()
MessageBox.Show("Hello")

といった具合です

Q秀丸でバッチファイルのコメントに色をつけるには

秀丸を使っています。

バッチファイルを編集するときに
remのあるところ(コメント)に色を付けるには、どうすればよいのでしょうか。

ちなみに、
//(スラッシュ2つ)や /* */の部分は色が付きますが、
どう設定したのかは覚えていません。

Version 4.07 です。
WindowsはXP

Aベストアンサー

秀丸ホームページの強調表示定義ファイルライブラリに
DOS 用のやつが公開されているので、それを読み込んで使うといいと思う。

参考URL:http://hide.maruo.co.jp/lib/hilight/batch.html

QVBからBATファイルを起動して戻り値の取得方法

VBからBATファイルを起動して戻り値(エラーコード)を
もらうにはどうすれば良いのでしょうか?
WshShellという関数を使用することは、何となく分かるのですが
宜しければサンプルを教えていただけないでしょうか?

Aベストアンサー

>WScript.CreateObjectの
>ところで"オブジェクトが必要です"となってしまいます。

VBのときは、CreateObjectですね。

Qバッチファイルの記述の仕方について教えてください。

バッチファイルの記述の仕方について教えてください。

個人的な学習で初めてバッチファイルを作成しているのですが
疑問な点があるので質問させて頂きます。

作成したテキストに対してparlのプログラムを用いて文字操作を
するという流れをバッチファイルにまとめてみようと思うのですが
windowsのコマンドプロンプトからでは「***.pl」と実行してもparlプログラムが
動いてくれず、「***.pl」のテキスト情報が出てきてしまいます(クリックした際と同じ動作)

msysを使用すればparlプログラムが動いてくれたので、バッチファイルから
msysの操作を行いparlプログラムを動かしたいのですがmsys上にバッチファイルから
どの様に入力情報を送るのかが分かりません。

そもそもバッチファイルではそのような操作は無理なのかも合わせて
知識のある方、分かりにくい書き方で申し訳ありませんが
ご教授お願いします。

[作成したバッチファイルの中身]

moji_syutsuryoku.exe    //簡単なテキストファイルを出力するプログラム
cd ../../../../         //msysが存在する階層まで移動
call msys.bat        //msysの呼び出し
----------------------------------
---ここからmsys上での操作を行いたい---
----------------------------------

バッチファイルの記述の仕方について教えてください。

個人的な学習で初めてバッチファイルを作成しているのですが
疑問な点があるので質問させて頂きます。

作成したテキストに対してparlのプログラムを用いて文字操作を
するという流れをバッチファイルにまとめてみようと思うのですが
windowsのコマンドプロンプトからでは「***.pl」と実行してもparlプログラムが
動いてくれず、「***.pl」のテキスト情報が出てきてしまいます(クリックした際と同じ動作)

msysを使用すればparlプログラムが動いてくれたので...続きを読む

Aベストアンサー

「parl」というのは「perl」の誤りですよね?

[作成したバッチファイルの中身]を次のようにしてみてください。

moji_syutsuryoku.exe
c:\perl\bin\perl.exe ***.pl

「c:\perl\bin\perl.exe」の部分はご自分の環境に合わせて変えてください。
なお、コマンドプロンプトで「perl -v」と打ってみて、perlのバージョン情報が表示されればフルパスで書かなくても「perl.exe」のみで大丈夫です。「'perl' は、内部コマンドまたは外部コマンド・・・」というエラーが出たら、フルパスを書く必要があります。
「***.pl」はperlのプログラムを記述したファイル名に変えてください。

QVB.NETでのDOSコマンドを実行について

VB.NETでのDOSコマンドを実行について

いつも大変お世話になっています。
VB.NET上でバイナリデータを
DOSコマンド「copy」で結合させたいのですが
うまくいきません。ご助言ください。

Dim results As String
Dim psi As New System.Diagnostics.ProcessStartInfo()

'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")

'出力を読み取れるようにする
psi.RedirectStandardInput = False
psi.RedirectStandardOutput = True
psi.UseShellExecute = False

'ウィンドウを表示しないようにする
psi.CreateNoWindow = True

'コマンドラインを指定("/c"は実行後閉じるために必要)
psi.Arguments = _
"/c copy /b /y "C:\Program Files\test\Data\out0001.bin"+"C:\Program Files\test\Data\out0002.bin" "C:\Program Files\test\Data\TEST.jpg""
'※コマンドの前後のダブルクォーテーションを省き、コマンドプロンプトで
' 直接実行した場合は成功しました。

'起動
Dim p As System.Diagnostics.Process=_
System.Diagnostics.Process.Start(psi)

'出力を読み取る
results = p.StandardOutput.ReadToEnd

'出力された結果を表示
Console.WriteLine(results)

'WaitForExitはReadToEndの後である必要がある
'(親プロセス、子プロセスでブロック防止のため)
p.WaitForExit()

VB.NETでのDOSコマンドを実行について

いつも大変お世話になっています。
VB.NET上でバイナリデータを
DOSコマンド「copy」で結合させたいのですが
うまくいきません。ご助言ください。

Dim results As String
Dim psi As New System.Diagnostics.ProcessStartInfo()

'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")

'出力を読み取れるようにする
psi.RedirectStandardInput = False
psi.RedirectStandardOutput = True
psi.UseShellExecute = False

'ウィン...続きを読む

Aベストアンサー

どんなエラーになってますか?

おそらく
"/c copy /b /y "
までで文字列
C:\Program Files\test\Data\out0001.bin
が文字列の外
"+"
が文字列
C:\Program Files\test\Data\out0002.bin
が文字列の外
...
となっているのではないかと思います。

"/c copy /b /y ""C:\Program Files\test\Data\out0001.bin""+""C:\Program Files\test\Data\out0002.bin"" ""C:\Program Files\test\Data\TEST.jpg"""

と"から"の間に"を書きたいときは、""と2つ続けるはずです。
(最後が3つなのは、前の2つは"を文字列に入れるため、最後の一つは文字列の終りです)


それか、いっそCOPYコマンドを使わず、VBだけでファイルの読み書きするかです。

QJava(サーブレット)コンパイル用バッチファイルの作成

Java(サーブレット)コンパイル用バッチファイルの作成

Java(サーブレット)コンパイル用バッチファイルの作成を以下のサンプルファイルを見ながら行いました。

@set CLASSPATH=C:\servletbook\apache-tomcat\common\lib\servlet-api.jar
javac -sourcepath src -d classes src/%1

そもそもバッチファイルがよく分かっていないのですが、ヒントを頂きたいと思い質問します。

このバッチファイルを使用して、srcディレクトリ内のxxx.javaファイルのコンパイルは出来るのですが、src/fooディレクトリ内のxxx.javaファイルもコンパイルするためにはバッチファイルソースのどこを変更すれば良いでしょうか?
また、src配下のすべてのディレクトリ内にあるxxx.javaファイルをコンパイル出来るようにするにはどうすれば良いでしょうか?
ご教授をお願いします。<(_ _)>

Aベストアンサー

試してないけど

@set CLASSPATH=C:\servletbook\apache-tomcat\common\lib\servlet-api.jar
javac -sourcepath src -d classes src/foo/%1

でしょうか?
バッチファイルでビルドするのはいつか限界がきます。
C言語界隈では make が良く使われますが、如何せん設計が古いので
Java のビルドツールは Apache Ant がお勧めです。

参考URL:http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/

QVBフォームアプリケーションにおけるcmdプロンプトの実行

OSはwin8.1 64bitです。

VBフォームアプリケーション上に設置したコマンドボタンを押すだけで
コマンドプロンプトからwindowsエクスペリエンスインデックスを実行したいと考えているのですが、
Windowsから直接立ち上げたコマンドプロンプトに「winsat formal -restart clean」と
入力すると問題なく始まるものの、
VBフォームから実行すると、「'winsat' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません」とエラーが出ます。

Dim ShellObj
ShellObj = CreateObject("WScript.Shell")
Call ShellObj.Run("cmd.exe /k winsat formal -restart clean")

Windowsから直接立ち上げる際、管理者権限を使用しなくても
問題なく走るため、管理者権限は関係ないと考えて良いのでしょうか?

また、どういった記述であればWindowsエクスペリエンスが実行できるでしょうか?
出来ればバッチやスクリプトは使用したくありません。

よろしくお願いいたします。

OSはwin8.1 64bitです。

VBフォームアプリケーション上に設置したコマンドボタンを押すだけで
コマンドプロンプトからwindowsエクスペリエンスインデックスを実行したいと考えているのですが、
Windowsから直接立ち上げたコマンドプロンプトに「winsat formal -restart clean」と
入力すると問題なく始まるものの、
VBフォームから実行すると、「'winsat' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません」とエラーが出ます。

Dim S...続きを読む

Aベストアンサー

ユーザー名を指定しないと、なぜかDirで出て来ませんでした。
(少し調べれば、分かるかもしれませんが・・・)
以下で、起動しました。環境は、VB2008でやってみました。
テストしながらしてるので、注釈が入っております。



Dim strUserName As String = "UserName"'Windowsのユーザー名
Dim strPassText As String = "Password" 'パスワード
Dim prss1 As New System.Diagnostics.Process
Dim secStr As New System.Security.SecureString
For Each c As Char In strPassText
secStr.AppendChar(c)
Next

With prss1
With .StartInfo
'出力を読み取れるようにする
.UseShellExecute = False
'.RedirectStandardOutput = True
'.RedirectStandardInput = False
'ウィンドウを表示しないようにする
.CreateNoWindow = False 'True:非表示

.UserName = strUserName
.Password = secStr

''UACダイアログが親プログラムに対して表示されるようにする()
'.ErrorDialog = True
'.ErrorDialogParentHandle = Me.Handle

'作業フォルダを指定する
.WorkingDirectory = "C:\WINDOWS\System32"

'.Verb = "runas" '管理者実行
.FileName = "cmd.exe"
'.Arguments = """/K Dir C:\WINDOWS\System32\winsat*"""
.Arguments = "/K WinSAT.exe formal -restart clean"

End With

.Start()


'終了するまで待つ
.WaitForExit()

.Close()

End With

ユーザー名を指定しないと、なぜかDirで出て来ませんでした。
(少し調べれば、分かるかもしれませんが・・・)
以下で、起動しました。環境は、VB2008でやってみました。
テストしながらしてるので、注釈が入っております。



Dim strUserName As String = "UserName"'Windowsのユーザー名
Dim strPassText As String = "Password" 'パスワード
Dim prss1 As New System.Diagnostics.Process
Dim secStr As New System.Security.SecureString
For Each c As Char In s...続きを読む

Qバッチファイルでフォルダとファイルを削除したい

バッチファイルで以下の2フォルダーと1ファイルを削除したいのですが
どのようにコマンド入力してバッチファイルを作成すればいいのでしょうか?
(確認なしで完全削除できるようにしたいです)

削除したいフォルダーとファイルの場所(例)

D:\delete test 1\abc(フォルダーです。中身あり)
D:\delete test 2\def(フォルダーです。中身あり)
D:\delete test 3\ghi\jkl.txt(ファイルです)

そして、初心者なりに考えて、、

rmdir /s /q D:\delete test 1\abc
rmdir /s /q D:\delete test 2\def
rmdir /s /q D:\delete test 3\ghi\jkl.txt

とメモ帳に入力して、cmd(batでも試しました)ファイルにして
管理者権限で実行してみたのですが、まったく削除されませんでした、、。

どのように入力してバッチファイルを作成すればいいのでしょうか?

Aベストアンサー

>delコマンドはどのように入力すればいいのでしょうか?
>初心者なもので何度もアドバイス頂いてすみません、、。

コマンドプロンプトで
del /?
とするとヘルプが出ると思いますが……。

del ”D:\delete test 3\ghi\jkl.txt”
だけで大丈夫そうですけどね。
ワイルドカード指定ではないですから、/qはなくても大丈夫でしょうし。
属性によっては/fは要るかも知れませんが。

QVB.NETで他のEXEを実行させる

VB.NETで他のEXEを実行させる以下の2つの方法が知りたいです。

1)perlのsystemのように実行完了後に制御が戻る

2)perlのexecのように実行完了後に制御が戻らない

あと、この2つの使い分けのコツ(用途)が知りたいです。

Aベストアンサー

http://jeanne.wankuma.com/tips/vb.net/process/
こちらの8番と9番をどうぞ。

使い分けですが、
実行完了を待って次の処理をする必要がある場合は、制御が戻るまで待つ、そうでないものはキックして終わり、です。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング