"これはWindowsフォルダに新しいフォルダを作成し、その中にサイズ0のテキストファイルを作るスクリプトです。1.でBuildPathメソッドを使って、C:\Windowsというフォルダの中に「新しいフォルダ」という名前のフォルダを作ったとき、できるフォルダのパスを調べてfolderpathという変数に代入しています。いう文字列が入ります。newfoldernameとやればいいのでは?と思われるかもしれませんが、BuildPathメソッドは「適切な位置にパス区切り文字(\)を付加してくれる」という長所があるのでこちらを使うようにしましょう。余分になってしまいますね。2.ではFolderExistsメソッドでフォルダの有無をチェックしています。ちなみにドライブの有無を調べるにはDriveExistsメソッドを使えばいいのです。3.でCreateFolderメソッドを使ってフォルダを作成しています。このとき引数にすでに存在するフォルダを指定するとエラーになってしまうので、2.でそれをチェックしたわけです。4.ではGetTempNameメソッドを利用して、ランダムなテンポラリなファイル名(拡張子は.tmp)を取得しています。BuildPathメソッドでそのファイルのフルパスを取得しているわけです。5.でCreateTextFileメソッドを使って空のファイルを作成しています。CreateTextFileメソッドは、第二引数にTrueを指定すると、もし第一引数のファイル名が既存の場合、上書きするようになります。次にファイルをコピーする例です。source,target'4.ファイルをコピーこのスクリプトは、デスクトップにあるショートカットをスタートメニューにコピーするスクリプトです。これを実行すると、デスクトップがウィンドウでいっぱいになってもショートカットにはアクセスできるようになります。(バッチファイルでもこれくらいは書けますって?)1.ではWshShellオブジェクトのWshSpecialFoldersオブジェクトを使って、デスクトップの場所を参照しています。BuildPathメソッドですべてのショートカット(.lnk)を含んだパスをsourceという変数に代入しています。次に2.ではスタートメニューフォルダの位置を取得し、そこに「デスクトップ」というサブフォルダ名を付加したパスを取得し、targetという変数に代入しています。フォルダがないと困るので3.で確認しています。4.でCopyFileメソッドを使ってコピーを実行。メニュー\デスクトップ\"という行が実行されたことになります。CopyFileメソッドの第一引数にはコピー元を指定します。上の例のように*(ワイルドカード)を用いて複数のファイルを指定できますが、もちろん単一のファイルも指定できます。第二引数にはコピー先を指定します。つけなければなりません。コピー元が単一のファイルなら、コピー先にファイル名を指定することも可能です。CopyFileメソッドの第三引数にFalseを指定すると、コピー先に既存のファイルがあっても上書きしなくなります。省略すると上書きします。コピー先が読みとり専用属性の場合エラーになります。フォルダをコピー・削除する例も見ておきましょう。"処理が終了しました。Express4のデータをバックアップするスクリプトです。(注意:このスクリプトはOE4専用です。OE5では動作しない可能性があります。バックアップ先のフォルダは各自変更のこと。Express以下のフォルダにあります。DataフォルダをWshSpecialFoldersオブジェクトにより取得して、BuildPathメソッドでつなげます。バックアップ先のフォルダが存在する場合は、これをまず削除します。削除するにはDeleteFolderメソッドを用います。DeleteFolderは、第一引数に削除するフォルダのパスを指定します。第二引数にTrueを指定すると、読みとり専用フォルダであっても強制的に削除します。フォルダをコピーする場合はCopyFolderメソッドを用います。このメソッドは、第一引数のフォルダを、サブフォルダ・ファイル含めて、第二引数で指定したフォルダにコピーするものです。Express\*","C:\Backup\"なる行が実行されたことになります。このようにワイルドカードを用いると、サブフォルダを指定することが可能です。(もちろん単一のフォルダも指定できます。その場合末尾には\をつけないようにします。次はファイルやフォルダを移動するスクリプトです。Then'1.もしコマンドラインオプションが指定されなければ、終了。"フォルダ名を指定して実行してください。Then'3.指定したフォルダが存在しなければ、終了。'5.親フォルダが存在しない場合は、終了。"このフォルダには親フォルダが存在しません。"処理が終了しました。"このスクリプトは、コマンドラインオプションで指定したフォルダの中身(サブフォルダとファイル)を、そのフォルダの親フォルダの直下に移動するスクリプトです。吸い出しの巻物.vbsという名前を付けてください。オプションをつけて実行する方法は、一つ前のLesson12で述べました。1.でコマンドラインオプション(以下、オプション)の記述の有無をチェックしています。2.でsourceという変数に、一つ目のオプションを代入しています。3.ではsourceが存在するフォルダかどうかチェックしています。4.ではGetParentFolderNameメソッドで、targetという変数に、sourceの親フォルダを代入しています。5.で今度はtargetの有無をチェックしています。この処理が必要かというと、sourceがルートフォルダ(ドライブ)の場合、その親フォルダは存在しないからです。6.でMoveFileメソッドを使って、指定されたフォルダの中にあるファイルを、一つ上のディレクトリに移動しています。MoveFileメソッドは、第一引数にファイル名、第二引数に移動先フォルダを指定します。Document\"が実行されたことになります。MoveFileメソッドもワイルドカードを利用することができますが、単一ファイルの指定も可能です。7.では今度はMoveFolderメソッドで、サブフォルダを移動させています。Document\"とした場合と同じです。Nextを用いてそのエラーを無視するようにしています。いってもエラーが発生すると、その時点で移動は中止されてしまいますが。ちなみにこのスクリプトでは、ファイル・フォルダを移動しますが、CopyFile、CopyFolderメソッドを使えば、コピーするように改造できます。フォルダの右クリックメニューに組み込むと、便利かもしれませんね。ファイルを削除するスクリプトをどうぞ。file'ファイルを削除これは、「最近使ったファイル」をクリアするスクリプトです。最近使ったファイルは通常C:\WINDOWS\Recentというフォルダにそのショートカットが作られています。WshSpecialFoldersオブジェクトでは"Recent"を指定するとそのフォルダの場所が取得できます。ファイルを削除するにはDeleteFileメソッドを使います。DeleteFileメソッドは、第一引数として削除するファイル名を指定します。第二引数にTrueを指定すると、読みとり専用ファイルも削除します。"C:\WINDOWS\Recent\*.*"が実行されたことになります。このLessonでは、FileSystemObjectを使って、ファイル操作する方法について述べました。次回は、このLessonの冒頭で紹介したメソッド・プロパティのうち、3.で挙げたものを使って、フォルダ・ファイル・ドライブの各オブジェクト・コレクションを取得し、それらのオブジェクトが持つプロパティ・メソッドを紹介したいと思います。