プロが教える店舗&オフィスのセキュリティ対策術

プログラム初心者です。宜しくお願いします。

職場で新PCを数十台導入したのでデータのお引越しをすることになりました。
主要なものはFASTWIZ.EXEを使用しますがNOTESデータの一部もデータ移管したいのです。
そこで以下のスクリプトを書いてみました。

------------------------------------

1 Dim objWshShell, objSF, FSO
2 Set objWshShell = CreateObject("WScript.Shell")
3 Set objSF = objWshShell.SpecialFolders
4 Set FSO = CreateObject("Scripting.FileSystemObject")
5 FSO.CopyFile "c:\notes\data\*.id", objSF.Item("MyDocuments")
6 FSO.CopyFile "c:\notes\data\desktop.dsk", objSF.Item("MyDocuments")
7 FSO.CopyFile "c:\winnt\notes.ini", objSF.Item("MyDocuments")

------------------------------------


ファイル名にアスタリスクを入れていないと書き込み出来ないとエラー(800A0046)が発生してしまいます。調べてみましたら権限が無いと発生するエラーだったのですが

例えば

7 FSO.CopyFile "c:\winnt\notes*.ini", objSF.Item("MyDocuments")

のようにファイル名の一部にアスタリスクを追加するとエラーが発生せず正常に実行されます。


アスタリスクを付ければ正常に動作するので良いんですが、何故なのか分からないと気持ちが悪くていけません。
調べてみたのですが分からず皆様のお知恵を拝借出来ないかと書き込ませて頂きました。

宜しくお願い致します。

A 回答 (3件)

CopyFile メソッドは、


コピー元に*が指定された場合コピー先をフォルダとして扱います。
また、コピー先フォルダが¥で終わっているときフォルダとしてあつかいます。
逆に言うと、*が指定されていない場合で、コピー先フォルダ名として¥で終わっていない場合、ファイルからファイルとしてコピーをするということです。
つまり、ファイル名が指定されたとしてコピーしようとするが、実際にはフォルダ名であるので、エラーになっているというようなことかと思います。
    • good
    • 2

.Item("MyDocuments")


は、最後に¥をつけないので
なんだったら
objSF.Item("MyDocuments") & "\"
とすればいいと思います
    • good
    • 0
この回答へのお礼

*が指定されておらず且つコピー先フォルダが¥で終っていないからと言う理由だったんですね。上記方法で解決致しました。
ご回答ありがとうございます。

お礼日時:2005/11/11 10:31

マイクロソフトのサイトに次のような報告がありました。


状況が分からないので、はずしていたらすみません。

この報告によると特別な環境がトリガーになっていますね。
そしてcreateobjectで発生するバグのようですね。
バグなので*のときは対象にならないということでしょうか?

いずれにしても相手先の権限とは無関係のようにみえますが・・・

その他にも同サイト内でそのエラー番号で検索すると15件ほどヒットしました。
一番関連がありそうなのがこの案件かと思った次第です。

参考URL:http://support.microsoft.com/default.aspx?scid=k …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
VSはインストールしておりません。
質問の書き方が悪かったようです。申し訳ありませんでした。いずれネットワークドライブに置いて各クライアントマシン上から実行して貰おうと思っていたのですが現段階では自分のマシン上でテストしております。ファイルやフォルダの権限は無関係です。
VSをインストールすることが合って同現象が発生したらhawkwindのご回答を参考にさせて頂きます。お世話になりました。

お礼日時:2005/11/11 09:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


人気Q&Aランキング