VBSの質問です

以下のa.vbsとb.vbsをそれぞれ単体で動かすと動くのですが
各中身を一つにしてab.vbsにしたら動きません
どうすれば動くでしょうか?よろしくお願いします
a.vbs
************************
Dim str_path
Set objFS = CreateObject("Scripting.FileSystemObject")
objFS.CopyFolder ".\hoge\1", ".\hoge\2"
************************

b.vbs
************************
Option Explicit
Dim objWShell
Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "cmd /c start .\NextFTP\NEXTFTP.EXE $Host14 -quit"
Set objWShell = Nothing
************************

ab.vbs
************************
Dim str_path
Set objFS = CreateObject("Scripting.FileSystemObject")
objFS.CopyFolder ".\hoge\1", ".\hoge\2"
Option Explicit
Dim objWShell
Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "cmd /c start .\NextFTP\NEXTFTP.EXE $Host14 -quit"
Set objWShell = Nothing
************************

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2014/10/18 21:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kensaito No.1

回答回数163ベストアンサー獲得回数4

ポイント250pt

http://msdn.microsoft.com/ja-jp/library/y9341s4f.aspx より引用:

Option Explicit ステートメントを使用する場合は、ファイル内の他のどのソース コード ステートメントよりも前に記述する必要があります。

したがって、

Option Explicit
Dim str_path
Set objFS = CreateObject("Scripting.FileSystemObject")
...

とすれば、とりあえずエラーは出なくなるでしょう。

他3件のコメントを見る
id:kensaito

申し訳ありません。コードの修正が一部抜けてました。
※Option Explicitを指定したのに変数"objFS"の使用を宣言していなかったので、objFS.CopyFolderでエラーになる

次のコードで試してみて下さい。

Option Explicit

Dim objFS
Set objFS = CreateObject("Scripting.FileSystemObject")
objFS.CopyFolder ".\hoge\1", ".\hoge\2"

Dim objWShell
Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "cmd /c start .\NextFTP\NEXTFTP.EXE $Host14 -quit"

Set objWShell = Nothing
Set objFS = Nothing

2014/10/11 23:16:22
id:kensaito

> objFS.CopyFolderでエラーになる

じゃなくて、「Set objFS = CreateObject("Scripting.FileSystemObject") でエラーになる」でした。

2014/10/11 23:25:24
id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント250pt

objWShell.Run "cmd /c start .\NextFTP\NEXTFTP.EXE $Host14 -quit"

ここで 相対パス指定していますが、フルパスで指定してみたらいかがでしょうか?

.\NextFTP\NEXTFTP.EXEの部分です。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません