ディレクトリを移動して実行するには?

解決


ろろ  2004-07-30 10:41:21  No: 115212  IP: [192.*.*.*]

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を見つけてくれるように?カレントディレクトリを
移動してプログラムを実行するにはどのように記述すればよいでしょうか?

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

編集 削除
YUU3  2004-07-30 11:20:03  No: 115213  IP: [192.*.*.*]

ChDirを使えばいいのでないのでしょうか?

編集 削除
YUU3  2004-07-30 11:22:29  No: 115214  IP: [192.*.*.*]

VBSにChDirが、あるのかわかりません。
大変申し訳ありません。

編集 削除
マグ  2004-07-30 11:58:11  No: 115215  IP: [192.*.*.*]

Shell関数が使えるのでしたら、xcopyを使ってはどうでしょうか?

記述:xcopy.exe コピー元のフォルダパス コピー先のフォルダパス /S /E

編集 削除
ろろ  2004-07-30 12:14:00  No: 115216  IP: [192.*.*.*]

ありがとうございます。

xcopyはファイルやフォルダのコピーだと思っておりましたが、
コピー後カレントディレクトリを移動もしてくれるのでしょうか?

今の知識ではxcopyを使う意図がわかりません。
すみません。

用はVBSを使ってカレントディレクトリを移動出来ればそれでよいのですが・・・

編集 削除
マグ  2004-07-30 12:35:40  No: 115217  IP: [192.*.*.*]

フォルダを移動させるのですか・・・・?

ついコピーだと思ってしまいました。

では、これはどうでしょうか?

xcopyで指定したフォルダをコピーした後に、
コピー元を削除するというのは?

編集 削除
ろろ  2004-07-30 13:17:17  No: 115218  IP: [192.*.*.*]

>マグさん

>xcopyで指定したフォルダをコピーした後に、
>コピー元を削除するというのは?

これでカレントディレクトリが移動するのでしょうか?
また、削除は不可能だと思います。
なぜなら、元ファイルはCD-ROMで配布予定であること、
および元のディレクトリには自分自身のスクリプトがいるからです。

VBSの中でプログラムを起動する際
C:\windows\notepad.exe  と起動しているとき
これを
cd c:\windopws
./notepad.exe  と実行出来ればいいのですが・・・

編集 削除
マグ  2004-07-30 14:02:49  No: 115219  IP: [192.*.*.*]

メモ帳なら

Shell("notepad.exe")

でできませんでした?

編集 削除
特攻隊長まるるう  2004-07-30 14:10:29  No: 115220  IP: [192.*.*.*]

横槍ゴメン!ちょっと話題がズレるかもしれないけど
そもそも 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

編集 削除
名前なし  2004-07-30 14:19:30  No: 115221  IP: [192.*.*.*]

>マグさん

以前からずっと思ってたんですがあなたの答えは本当にいい加減ですね。
混乱の元になるので分からない問題には無理にレスを付けないで下さい。

編集 削除
特攻隊長まるるう  2004-07-30 14:22:23  No: 115222  IP: [192.*.*.*]

もうちょっと改造すればどうにかなりそう。

'/// 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

編集 削除
ろろ  2004-07-30 14:48:02  No: 115223  IP: [192.*.*.*]

>特攻隊長まるるうさん

ありがとうございます。
'/// D:\test.vbs
Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /K CD C:\ & C:\b.exe"
Set oShell = Nothing

この方法を利用させて頂きました。

外部プログラムはすでに作成者もいないしソースコードもないため
改造ができなかったのです。

この例で開いたコマンドプロンプトは自動で閉じることは
さすがに出来ないですよね?
これができたら完璧なのですが・・・。

ありがとうございました。

*誠に申し訳ありませんが
もうしばらく解決チェックをつけずにお願い致します。

編集 削除
ろろ  2004-07-30 15:05:03  No: 115224  IP: [192.*.*.*]

自己レスになりますが、コマンドプロンプトを閉じることができました。

ありがとうございました。

編集 削除
特攻隊長まるるう  2004-07-30 15:06:48  No: 115225  IP: [192.*.*.*]

あまり VBS 自体詳しくないので他の方の意見を待ってもらって構いませんが

oShell.run "cmd /K CD C:\ & C:\b.exe & Exit"

…で閉じられますか?…まぁ Dos コマンドですから…そっちの方で
もう少し調べてみて下さい。

編集 削除