- ベストアンサー
WSHのCreateTextFileについて
- 初心者のためのWSHのCreateTextFileメソッドの使い方を質問します。
- VBscriptを使用してスクリプトファイルにテキストファイルを新規作成する方法について理解できません。
- ソースコードのGetBaseNameメソッドを使用してファイル名を生成しようとしたが上手く作成できません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
カレントフォルダ(スクリプトのあるフォルダ)に作成するのですね。 その点は勘違いしていました。申し訳ありません。 私のところでは、変数に直接ファイル名を代入してもエラーとなりました。 これは、VBScriptが実際にはCScript.exeまたはWScript.exeによって実行されるため、スクリプトにドロップするとカレントフォルダとしてWindows\System32が設定されるためと思われます。 ためしに、 CScript text.vbs %1 という内容のバッチファイルをスクリプト(こちらではtest.vbsという名前で保存してます)と同じフォルダにおいて、このバッチファイルにドロップするとうまくいきます。これは、バッチファイルのカレントフォルダがバッチファイルが存在するフォルダに設定されるためと思われます。 カレントフォルダをスクリプトが存在するフォルダに移動するコードを追加したところ、エラーは発生しませんでした。 dim objShell set objShell = CreateObject("WScript.Shell") objShell.CurrentDirectory = objFSO.GetParentFolderName(WScript.ScriptFullName)
その他の回答 (1)
- m-take0220
- ベストアンサー率60% (477/782)
GetBaseNameを使用すると、ファイルのフォルダ名がなくなってませんか? GetParentFolderNameでフォルダ名を取り出して連結すると、うまくいきませんか?
補足
回答ありがとうございます。 確かにGetBaseNameを使用するとフォルダ名は破棄されてしまっています。 フォルダ名も連結すると上手く作動します。 ただ、strFileNewFileNameに文字列"strFileName_admin.txt"を直接代入して、 CreateTextFileに渡すとスクリプトファイルがあるフォルダに新規作成されます。 GetBaseNameメソッドを使ってstrNewFileNameを生成した時と 文字列の中身は全く同じなのに(If文で確認しました。)、 生成されるファイルの保存場所が違うことに疑問を感じています。 その部分で回答できる部分があれば宜しくお願いします。
お礼
返信が遅くなってしまって申し訳ございません。 おっしゃる通り、System32にファイルを生成しておりました。 カレントフォルダを変更した所、無事作成することができましたのでご報告致します。 回答ありがとうございました。