VBscriptでコマンドプロンプトを起動させテキストを発行させることで悩んでおります。
コマンドラインのツールを実行させそこへテキストに記述された内容を実行させたいと思っています。
Dim strCOM
For i = 1 to 15
strCOM = "cmd /C C:\○○○○\△△△△.exe
'ここがわかりません
'テキストファイルを流したいのですが・・・・
'コマンド名を仮に@@@@とします。
"@@@@ D:\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt"
'をコマンドライン上に流したいのですが・・・
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec(strCOM)
FileCopy "D:\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt", "D:\終了\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt"
'ここにSleep関数?で5分後とカウントアップにしたいのですが調べてみてもちょっと検討がつかなかったので・・・
'教えていただけないでしょうか?
Next
回答(1)
1.

CMD を起動しなくても実行できます。
ファイルのコピーは、VBScript の中でやった方がいいです。
Set ObjFS = WScript.CreateObject("Scriptting.FileSystemObject")
objFS.CopyFile "コピー元ファイルパス" "コピー先ファイルパス"
の様にします。
(ファイルオブジェクトからもコピーできます)
5分待つ:
WScript.Sleep(300000) '単位はミリ秒
コメント(11)
回答有難うございます。
実は先の質問のHiRDBに関係しています。
まず先にカレントディレクトリをしてからpdsql.exe < D:\HEPPOKO0001.txtとしたいのですがどうしたらよいでしょうか?
#1>まず先にカレントディレクトリをして
カレントディレクトリ(作業ディレクトリ)を変更するには、
Set oSh = WScript.CreateObject("WScript.Shell")
oSh.CurrentDirectory = "パス"
のようにします。
パスには、CDコマンドで使えるような相対パスも使えます。
#1>pdsql.exe < D:\HEPPOKO0001.txtとしたい
すでに回答で書いたようにコマンドラインと同じで良いです
Set oExec=WshShell.Exec("pdsql.exe < D:\HEPPOKO0001.txt")
の様に実行できます。
標準出力への出力は
oExec.StdOut (出力ストリーム)に出力されることに注意
回答ありがとうございます。
どうも先にただカレントディレクトリすると動かないみたい?なんです。
コマンドプロンプトの中でcd /d D:Testに変えた後そこにあるpdsql.exeを実行するために「pdsql.exe < D:\HEPPOKO0001.txtとしてみたいのですがcdが動かない・・・
そもそもデバッグの仕方がよくわからなくて・・・
色々すみません
>>#4
「cd が動かない」
状況がよくわからないのですが、
推測で・
cd は、cmd.exe の内部コマンドですから、
cmd の配下で使わないといけないですけど、
そのためにスクリプトから cmd を起動してcd を実行しても、新しく起動したcmd にとってのカレントディレクトリを変更しただけなので、cd が事実上効いていないように思われているのではないかと思います。
前にも書きましたが、cd は、スクリプトからではあまり実行する必要はありません。
ワーキングディレクトリを設定する意味でcd するなら、#2のように変更します。
また、
パスの通っていないコマンドを実行するには、
d:\test\pdsql.exe
のようにフルパスを指定した方がいいでしょう。
フルパス指定でd:\test\pdsql.exe < < D:\HEPPOKO0001.txtとやってみたのですがpdsql.exeは起動するのですがコマンドが発行されません。
フルパス指定だとダメになってしまうものなのでしょうか?DOS画面は立ち上がりpdsql.exeの立ち上がりも確認できるのですがコマンドだけが何故か・・・???
d:\test\pdsql.exe < D:\HEPPOKO0001.txt
訂正です。
ありがとうございました。
コマンド発行は出来ました!あと少し足りない部分もありますが一応公開の意味も込めて再度書きます。
あと、HiRDBについて何か書き込んでいただければナレを差し上げれますので・・・感謝しております。




