VBSについての質問になります。
現在VBSである自動処理を行おうとしています。
これらをCD-ROMかなにかでユーザーに配布を予定しています。
配布したファイルが
CD-ROM:\a.vbs
CD-ROM:\b.exe(外部のプログラムです)
CD-ROM:\c.dat
とあり
Cドライブにコピーを行い
Windowsのシステムフォルダから必要なファイルをコピーする。(VBSで)
この段階で
C:\b.exe
C:\c.dat
C:\D.txt
があります。
ここで同じくvbsから
WshShell.Run(Cmd , 1, true)のように実行をしたとき
C:\b.exeがD.txtを見つけてくれません。
プログラムは動いているのにカレントディレクトリがCD-ROM上
のような感じになっています。
これをC:\D.txtを見つけてくれるように?カレントディレクトリを
移動してプログラムを実行するにはどのように記述すればよいでしょうか?
よろしくお願いいたします。
ChDirを使えばいいのでないのでしょうか?
VBSにChDirが、あるのかわかりません。
大変申し訳ありません。
Shell関数が使えるのでしたら、xcopyを使ってはどうでしょうか?
記述:xcopy.exe コピー元のフォルダパス コピー先のフォルダパス /S /E
ありがとうございます。
xcopyはファイルやフォルダのコピーだと思っておりましたが、
コピー後カレントディレクトリを移動もしてくれるのでしょうか?
今の知識ではxcopyを使う意図がわかりません。
すみません。
用はVBSを使ってカレントディレクトリを移動出来ればそれでよいのですが・・・
フォルダを移動させるのですか・・・・?
ついコピーだと思ってしまいました。
では、これはどうでしょうか?
xcopyで指定したフォルダをコピーした後に、
コピー元を削除するというのは?
>マグさん
>xcopyで指定したフォルダをコピーした後に、
>コピー元を削除するというのは?
これでカレントディレクトリが移動するのでしょうか?
また、削除は不可能だと思います。
なぜなら、元ファイルはCD-ROMで配布予定であること、
および元のディレクトリには自分自身のスクリプトがいるからです。
VBSの中でプログラムを起動する際
C:\windows\notepad.exe と起動しているとき
これを
cd c:\windopws
./notepad.exe と実行出来ればいいのですが・・・
メモ帳なら
Shell("notepad.exe")
でできませんでした?
横槍ゴメン!ちょっと話題がズレるかもしれないけど
そもそも C:\b.exe は本当に立ち上がってるの?だとしたら
なんで自分のパスから D.txt を探さないの?
カレントフォルダ移動しなくても自分の立ち上がった場所なら
分かるよ?↓こんなんじゃダメ? b.exe は改造できないの?
'/// D:\test.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("C:\b.exe", 1, true)
[VB6.0]
'/// C:\b.exe
Private Sub Form_Load()
MsgBox (App.Path & "D.txt")
End Sub
>マグさん
以前からずっと思ってたんですがあなたの答えは本当にいい加減ですね。
混乱の元になるので分からない問題には無理にレスを付けないで下さい。
もうちょっと改造すればどうにかなりそう。
'/// D:\test.vbs
Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /K CD C:\ & C:\b.exe"
Set oShell = Nothing
[VB6.0]
'/// C:\b.exe
Private Sub Form_Load()
' MsgBox (App.Path & "D.txt")
MsgBox (CurDir & "D.txt")
End Sub
>特攻隊長まるるうさん
ありがとうございます。
'/// D:\test.vbs
Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /K CD C:\ & C:\b.exe"
Set oShell = Nothing
この方法を利用させて頂きました。
外部プログラムはすでに作成者もいないしソースコードもないため
改造ができなかったのです。
この例で開いたコマンドプロンプトは自動で閉じることは
さすがに出来ないですよね?
これができたら完璧なのですが・・・。
ありがとうございました。
*誠に申し訳ありませんが
もうしばらく解決チェックをつけずにお願い致します。
自己レスになりますが、コマンドプロンプトを閉じることができました。
ありがとうございました。
あまり VBS 自体詳しくないので他の方の意見を待ってもらって構いませんが
oShell.run "cmd /K CD C:\ & C:\b.exe & Exit"
…で閉じられますか?…まぁ Dos コマンドですから…そっちの方で
もう少し調べてみて下さい。
ツイート | ![]() |