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

解決


ろろ  2004-07-30 19:41:21  No: 115212

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 20:20:03  No: 115213

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


YUU3  2004-07-30 20:22:29  No: 115214

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


マグ  2004-07-30 20:58:11  No: 115215

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

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


ろろ  2004-07-30 21:14:00  No: 115216

ありがとうございます。

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

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

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


マグ  2004-07-30 21:35:40  No: 115217

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

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

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

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


ろろ  2004-07-30 22:17:17  No: 115218

>マグさん

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

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

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


マグ  2004-07-30 23:02:49  No: 115219

メモ帳なら

Shell("notepad.exe")

でできませんでした?


特攻隊長まるるう  2004-07-30 23:10:29  No: 115220

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

>マグさん

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


特攻隊長まるるう  2004-07-30 23:22:23  No: 115222

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

'/// 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 23:48:02  No: 115223

>特攻隊長まるるうさん

ありがとうございます。
'/// 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-31 00:05:03  No: 115224

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

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


特攻隊長まるるう  2004-07-31 00:06:48  No: 115225

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加