ファイル&フォルダ操作
ここではJScriptでファイル、フォルダのコピーや移動、属性の設定や取得の方法を紹介します。 本パートのサンプルを実行するときは、ソースコードに記載してあるパスとファイル名に注意してください。 とりあえず、パソコンの動作が不安定になることは絶対にないように、テスト用のフォルダ内でのみ動作するようにしています。 システムファイルなんて移動したら最悪ですからね。f^^
カレントディレクトリを設定&取得
カレントディレクトリを取得、設定するには以下のプロパティを使用することで実現できます。 文字列に「\」マークを使用するには「\\」と2つ並べて扱わなければなりません。 パスに使用する「\」マークの変わりに「/」でも問題ありません。 「\」マークと違い、2つ並べる必要がないので、「/」の方をお勧めしますよ。
プロパティ名 object.CurrentDirectory; プロパティ説明 現在アクティブになっているディレクトリを取得または、設定を提供するプロパティ。 引数 object・・・・・・WshShellオブジェクト 戻り値 現在アクティブになっているディレクトリへのパス。
[サンプルコード]
// // ファイル&フォルダ操作 // // カレントディレクトリの設定と取得。 // // Shell関連の操作を提供するオブジェクトを取得 var sh = new ActiveXObject( "WScript.Shell" ); // 現在のカレントディレクトリを表示 WScript.Echo( sh.CurrentDirectory ); // 「C:」ドライブの直下にカレントディレクトリを設定 sh.CurrentDirectory = "C:/"; // 設定後のカレントディレクトリを表示 WScript.Echo( sh.CurrentDirectory ); // オブジェクトを解放 sh = null;
[実行結果]
最初に実行ファイルが置いてある階層のパスがメッセージボックスで表示され、 その後「C:」ドライブ直下のパスがメッセージボックスで表示されます。
ファイルの存在確認
指定したパスのファイルが存在しているか存在していないかを調べるには以下の関数を使用することで実現できます。
関数名 object.FileExists( path ); 関数説明 指定したパスのファイルが存在しているかどうかを判断し、 ブール値を戻り値に返します。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・存在しているか調べるファイルへのパス(絶対パス、 相対パスどちらも指定可能) 戻り値 pathで指定したパスのファイルが存在していた場合true。 存在していない場合はfalse。
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスのファイルが存在してるかを確認する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST」の階層に「Info.txt」ファイルが存在しているかを確認 if( fs.FileExists("C:/TEST/Info.txt") ) WScript.Echo( "「Info.txt」は存在します。" ); else WScript.Echo( "「Info.txt」は存在しません。" ); // オブジェクトを解放 fs = null;
[実行結果]
「C:/TEST」の階層に「Info.txt」ファイルが存在しているかどうかがメッセージボックスで表示されます。
ファイルを移動
指定したパスのファイルを移動するには以下の関数を使用することで実現できます。
関数名 object.MoveFile( src, dest ); 関数説明 ファイルを別の階層に移動する。 絶対パス及び相対パスでの移動が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト src ・・・・・・・移動するファイルのパス(ワイルドカード使用可能) dest・・・・・・・移動先のパス(すでに同名のファイルが存在する場合は 例外が発生します) 戻り値 なし。
[サンプルコード1]
// // ファイル&フォルダ操作 // // 指定したパスのファイルを移動する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「Info.txt」ファイルを // 「C:/TEST/2」の階層に移動 fs.MoveFile( "C:/TEST/1/Info.txt", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果1]
「C:/TEST/1」の階層の「Info.txt」ファイルが「C:/TEST/2」の階層に移動されます。
[サンプルコード2]
// // ファイル&フォルダ操作 // // 指定したパスのファイルをリネームして移動する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「Info.txt」ファイルを // 「C:/TEST/2」の階層にリネームして移動 fs.MoveFile( "C:/TEST/1/Info.txt", "C:/TEST/2/NewInfo.txt" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果2]
「C:/TEST/1」の階層の「Info.txt」ファイルが「C:/TEST/2」の階層に移動され、ファイル名は「NewInfo.txt」に変更されます。
[サンプルコード3]
// // ファイル&フォルダ操作 // // 指定したパスのファイルを移動する(正規表現)。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の拡張子が「.txt」のファイル全てを // 「C:/TEST/2」の階層に移動 fs.MoveFile( "C:/TEST/1/*.txt", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果3]
「C:/TEST/1」の階層の拡張子が「.txt」のファイル全てが「C:/TEST/2」の階層に移動されます。
[サンプルコード4]
// // ファイル&フォルダ操作 // // 相対パスで指定したファイルを移動する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 本ファイルと同階層にある「Info.txt」ファイルを // 一つ前の階層に移動 fs.MoveFile( "Info.txt", "../" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果4]
本ファイルと同階層にある「Info.txt」ファイルが一つ前の階層に移動されます。
ファイルをコピー
指定したパスのファイルをコピーするには以下の関数を使用することで実現できます。
関数名 object.CopyFile( src, dest, [op] ); 関数説明 ファイルを別の階層にコピーする。 絶対パス及び相対パスでの移動が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト src ・・・・・・・コピーするファイルのパス(ワイルドカード使用可能) dest・・・・・・・コピー先のパス op・・・・・・・・コピー先に同名のファイルが存在するとき上書きするかどうかを 示すブール値。 ただし、コピー先の同名のファイルが読取専用ファイルだった場合は 例外が発生します。 設定値がtrueなら上書きされ、falseは上書きされません。(省略可) 省略した場合は、trueと同じ動作です。 戻り値 なし。
[サンプルコード1]
// // ファイル&フォルダ操作 // // 指定したパスのファイルをコピーする。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「Info.txt」ファイルを // 「C:/TEST/2」の階層にコピー fs.CopyFile( "C:/TEST/1/Info.txt", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果1]
「C:/TEST/1」の階層の「Info.txt」ファイルが「C:/TEST/2」の階層にコピーされます。
[サンプルコード2]
// // ファイル&フォルダ操作 // // 指定したパスのファイルをリネームしてコピーする。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「Info.txt」ファイルを // 「C:/TEST/2」の階層にリネームしてコピー fs.CopyFile( "C:/TEST/1/Info.txt", "C:/TEST/2/NewInfo.txt" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果2]
「C:/TEST/1」の階層の「Info.txt」ファイルが「C:/TEST/2」の階層にコピーされ、ファイル名は「NewInfo.txt」に変更されます。
[サンプルコード3]
// // ファイル&フォルダ操作 // // 指定したパスのファイルをコピーする(正規表現)。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の拡張子が「.txt」のファイル全てを // 「C:/TEST/2」の階層にコピー fs.CopyFile( "C:/TEST/1/*.txt", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果3]
「C:/TEST/1」の階層の拡張子が「.txt」のファイル全てが「C:/TEST/2」の階層にコピーされます。
[サンプルコード4]
// // ファイル&フォルダ操作 // // 相対パスで指定したファイルをコピーする。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 本ファイルと同階層にある「Info.txt」ファイルを // 一つ前の階層にコピー fs.CopyFile( "Info.txt", "../" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果4]
本ファイルと同階層にある「Info.txt」ファイルが一つ前の階層にコピーされます。
ファイルを削除
指定したパスのファイルを削除するには以下の関数を使用することで実現できます。
関数名 object.DeleteFile( path, [op] ); 関数説明 ファイルを削除する。 絶対パス及び相対パスでの移動が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・削除するファイルのパス(ワイルドカード使用可能) op・・・・・・・・削除するファイルが読取専用ファイルの場合、削除可能かどうかを 示すブール値。 設定値がtrueなら読取専用ファイルの削除が可能で、 falseは読取専用ファイルは削除できません。 戻り値 なし。
[サンプルコード1]
// // ファイル&フォルダ操作 // // 指定したパスのファイルを削除する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST」の階層の「Info.txt」ファイルを削除 fs.DeleteFile( "C:/TEST/Info.txt" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果1]
「C:/TEST」の階層の「Info.txt」ファイルが削除されます。
[サンプルコード2]
// // ファイル&フォルダ操作 // // 指定したパスのファイルを削除する(正規表現)。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST」の階層の拡張子が「.txt」のファイル全てを削除 fs.DeleteFile( "C:/TEST/*.txt" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果2]
「C:/TEST」の階層の拡張子が「.txt」のファイル全てが削除されます。
[サンプルコード3]
// // ファイル&フォルダ操作 // // 相対パスで指定したファイルを削除する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 本ファイルと同階層にある「Info.txt」ファイルを削除 fs.DeleteFile( "Info.txt" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果3]
本ファイルと同階層にある「Info.txt」ファイルが削除されます。
ファイル名を設定&取得
指定したパスのファイルのファイル名を取得または変更するには以下の関数及び、プロパティを使用することで実現できます。
関数名 object.GetFile( path ); 関数説明 指定したパスのファイルのFileオブジェクトを取得する。 絶対パス及び相対パスでの指定が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・目的のファイルへのパス 戻り値 目的のファイルのFileオブジェクト
プロパティ名 object.Name; プロパティ説明 Fileオブジェクトに設定されているファイル名の取得または、設定する 方法を提供するプロパティ。 引数 object・・・・・・Fileオブジェクト 戻り値 Fileオブジェクトに設定されているファイル名
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスのファイルのファイル名の取得と、ファイル名の変更。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // Fileオブジェクトを取得 var file = fs.GetFile( "C:/TEST/Info.txt" ); // ファイル名を表示 WScript.Echo( file.Name ); // ファイル名を変更 file.Name = "NewInfo.txt"; // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果]
「C:/TEST」の階層の「Info.txt」ファイルのFileオブジェクトを取得し、 最初に変更前のファイル名をメッセージボックスで表示し、 ファイル名を「NewInfo.txt」に変更されます。
指定階層の全ファイルを取得
指定したディレクトリ内の全てのFileオブジェクトを取得するには以下の関数及び、プロパティを使用することで実現できます。
関数名 object.GetFolder( path ); 関数説明 指定したパスのフォルダのFolderオブジェクトを取得する。 絶対パス及び相対パスでの指定が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・目的のフォルダへのパス 戻り値 目的のフォルダのFolderオブジェクト
プロパティ名 object.Files; プロパティ説明 Folderオブジェクトに設定されているFileオブジェクト全てを 管理しているコレクションを提供するプロパティ。 引数 object・・・・・・Folderオブジェクト 戻り値 Folderオブジェクトに設定されているFileオブジェクト全てを 管理しているコレクション
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダ内にある全ファイルを取得。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // Folderオブジェクトを取得 var folder = fs.GetFolder( "C:/TEST" ); // EnumeratorオブジェクトにFolderオブジェクトに // 含まれている全てのFileオブジェクトを格納 var em = new Enumerator( folder.Files ); // 格納したFileオブジェクトのファイル名を全て表示 for( em.moveFirst(); !em.atEnd(); em.moveNext() ) WScript.Echo( em.item().Name ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果]
「C:/TEST」の階層の全てのファイル名をメッセージボックスで一つずつ表示されます。
フォルダの存在確認
指定したパスのフォルダが存在しているか存在していないかを調べるには以下の関数を使用することで実現できます。
関数名 object.FolderExists( path ); 関数説明 指定したパスのフォルダが存在しているかどうかを判断し、 ブール値を戻り値に返します。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・存在しているか調べるフォルダへのパス(絶対パス、 相対パスどちらも指定可能) 戻り値 pathで指定したパスのフォルダが存在していた場合true。 存在していない場合はfalse。
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダが存在してるかを確認する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST」の階層に「EX」フォルダが存在しているかを確認 if( fs.FolderExists("C:/TEST/EX") ) WScript.Echo( "「EX」は存在します。" ); else WScript.Echo( "「EX」は存在しません。" ); // オブジェクトを解放 fs = null;
[実行結果]
「C:/TEST」の階層に「EX」フォルダが存在しているかどうかがメッセージボックスで表示されます。
フォルダを作成
指定したパスにフォルダを作成するには以下の関数を使用することで実現できます。 (2016/8/8追記)
関数名 object.CreateFolder( path ); 関数説明 指定したパスにフォルダを作成する。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・作成するフォルダへのパス(絶対パス、 相対パスどちらも指定可能) ※一度に複数の階層は作成は出来ない。 「C:/1/2/3/4/5/6/7」のように一気に 7つ作成は出来ないので注意。 戻り値 作成したFolderオブジェクト。
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスにフォルダを作成する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST」の階層に「1」フォルダが存在しているかを確認 if( fs.FolderExists("C:/TEST/1") ) { WScript.Echo( "「1」は存在します。" ); } else { // 「C:/TEST」の階層に「1」フォルダを作成 fs.CreateFolder( "C:/TEST/1" ); WScript.Echo( "「1」フォルダを作成しました。" ); } // オブジェクトを解放 fs = null;
[実行結果]
「C:/TEST」の階層に「1」フォルダが作成される。 すでに同名のフォルダが存在していたら、存在していることがメッセージボックスで表示される。
フォルダを移動
指定したパスのフォルダを移動するには以下の関数を使用することで実現できます。
関数名 object.MoveFolder( src, dest ); 関数説明 フォルダを別の階層に移動する。 絶対パス及び相対パスでの移動が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト src ・・・・・・・移動するフォルダのパス(ワイルドカード使用可能) dest・・・・・・・移動先のパス(すでに同名のフォルダが存在する場合は 例外が発生します) 戻り値 なし。
[サンプルコード1]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダを移動する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「A」フォルダを // 「C:/TEST/2」の階層に移動 fs.MoveFolder( "C:/TEST/1/A", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果1]
「C:/TEST/1」の階層の「A」フォルダが「C:/TEST/2」の階層に移動されます。
[サンプルコード2]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダをリネームして移動する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「A」フォルダを // 「C:/TEST/2」の階層にリネームして移動 fs.MoveFolder( "C:/TEST/1/A", "C:/TEST/2/NewA" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果2]
「C:/TEST/1」の階層の「A」フォルダが「C:/TEST/2」の階層に移動され、フォルダ名は「NewA」に変更されます。
[サンプルコード3]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダを移動する(正規表現)。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層のフォルダ全てを // 「C:/TEST/2」の階層に移動 fs.MoveFolder( "C:/TEST/1/*", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果3]
「C:/TEST/1」の階層のフォルダ全てが「C:/TEST/2」の階層に移動されます。
[サンプルコード4]
// // ファイル&フォルダ操作 // // 相対パスで指定したフォルダを移動する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 本ファイルと同階層にある「A」フォルダを // 一つ前の階層に移動 fs.MoveFolder( "A", "../" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果4]
本ファイルと同階層にある「A」フォルダが一つ前の階層に移動されます。
フォルダをコピー
指定したパスのフォルダをコピーするには以下の関数を使用することで実現できます。
関数名 object.CopyFolder( src, dest, [op] ); 関数説明 フォルダを別の階層にコピーする。 絶対パス及び相対パスでの移動が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト src ・・・・・・・コピーするフォルダのパス(ワイルドカード使用可能) dest・・・・・・・コピー先のパス op・・・・・・・・コピー先に同名のフォルダが存在するとき上書きするかどうかを 示すブール値。 設定値がtrueなら上書きされ、falseは上書きされません。(省略可) 省略した場合は、trueと同じ動作です。 戻り値 なし。
[サンプルコード1]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダをコピーする。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「A」フォルダを // 「C:/TEST/2」の階層にコピー fs.CopyFolder( "C:/TEST/1/A", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果1]
「C:/TEST/1」の階層の「A」フォルダが「C:/TEST/2」の階層にコピーされます。
[サンプルコード2]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダをリネームしてコピーする。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層の「A」フォルダを // 「C:/TEST/2」の階層にリネームしてコピー fs.CopyFolder( "C:/TEST/1/A", "C:/TEST/2/NewA" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果2]
「C:/TEST/1」の階層の「A」フォルダが「C:/TEST/2」の階層にコピーされ、フォルダ名は「NewA」に変更されます。
[サンプルコード3]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダをコピーする(正規表現)。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST/1」の階層のフォルダ全てを // 「C:/TEST/2」の階層にコピー fs.CopyFolder( "C:/TEST/1/*", "C:/TEST/2/" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果3]
「C:/TEST/1」の階層のフォルダ全てが「C:/TEST/2」の階層にコピーされます。
[サンプルコード4]
// // ファイル&フォルダ操作 // // 相対パスで指定したフォルダをコピーする。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 本ファイルと同階層にある「A」フォルダを // 一つ前の階層にコピー fs.CopyFolder( "A", "../" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果4]
本ファイルと同階層にある「A」フォルダが一つ前の階層にコピーされます。
フォルダを削除
指定したパスのフォルダを削除するには以下の関数を使用することで実現できます。
関数名 object.DeleteFolder( path, [op] ); 関数説明 フォルダを削除する。 絶対パス及び相対パスでの移動が可能です。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・削除するフォルダのパス(ワイルドカード使用可能) op・・・・・・・・削除するフォルダが読取専用フォルダの場合、削除可能かどうかを 示すブール値。 設定値がtrueなら読取専用フォルダの削除が可能で、 falseは読取専用フォルダは削除できません。 戻り値 なし。
[サンプルコード1]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダを削除する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST」の階層の「EX」フォルダを削除 fs.DeleteFolder( "C:/TEST/EX" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果1]
「C:/TEST」の階層の「EX」フォルダが削除されます。
[サンプルコード2]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダを削除する(正規表現)。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 「C:/TEST」の階層のフォルダ全てを削除 fs.DeleteFolder( "C:/TEST/*" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果2]
「C:/TEST」の階層のフォルダ全てが削除されます。
[サンプルコード3]
// // ファイル&フォルダ操作 // // 相対パスで指定したフォルダを削除する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // 本ファイルと同階層にある「EX」フォルダを削除 fs.DeleteFolder( "EX" ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果3]
本ファイルと同階層にある「EX」フォルダが削除されます。
フォルダ名を設定&取得
指定したパスのフォルダのフォルダ名を取得または変更するには以下のプロパティを使用することで実現できます。 GetFolder()関数については指定階層の全ファイルを取得を参照してください。
プロパティ名 object.Name; プロパティ説明 Folderオブジェクトに設定されているフォルダ名の取得または、設定する 方法を提供するプロパティ。 引数 object・・・・・・Folderオブジェクト 戻り値 Folderオブジェクトに設定されているファイル名
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダのフォルダ名の取得と、フォルダ名の変更。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // Folderオブジェクトを取得 var folder = fs.GetFolder( "C:/TEST/EX" ); // フォルダ名を表示 WScript.Echo( folder.Name ); // フォルダ名を変更 folder.Name = "NewEX"; // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果]
「C:/TEST」の階層の「EX」フォルダのFolderオブジェクトを取得し、 最初に変更前のフォルダ名をメッセージボックスで表示し、 フォルダ名を「NewEX」に変更されます。
指定階層の全フォルダを取得
指定したディレクトリ内の全てのFolderオブジェクトを取得するには以下のプロパティを使用することで実現できます。 GetFolder()関数については指定階層の全ファイルを取得を参照してください。
プロパティ名 object.SubFolders; プロパティ説明 Folderオブジェクトに設定されている全てのサブフォルダのFolderオブジェクトを 管理しているコレクションを提供するプロパティ。 引数 object・・・・・・Folderオブジェクト 戻り値 Folderオブジェクトに設定されている全てのサブフォルダのFolderオブジェクトを 管理しているコレクション
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスのフォルダ内にある全フォルダを取得。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // Folderオブジェクトを取得 var folder = fs.GetFolder( "C:/TEST" ); // EnumeratorオブジェクトにFolderオブジェクトに // 含まれている全てのFolderオブジェクトを格納 var em = new Enumerator( folder.SubFolders ); // 格納したFileオブジェクトのファイル名を全て表示 for( em.moveFirst(); !em.atEnd(); em.moveNext() ) WScript.Echo( em.item().Name ); // オブジェクトを解放 fs = null; WScript.Echo( "終了" );
[実行結果]
「C:/TEST」の階層の全てのフォルダ名をメッセージボックスで一つずつ表示されます。
ファイル属性を設定&取得
指定したファイルまたはフォルダの属性の取得及び設定するには以下のプロパティを使用することで実現できます。 このプロパティ値は複数の属性の値を加算した値となります。 加算してしまったら予想外な属性になるんじゃないの? って考える人もいるでしょうが、プロパティ値を二進数で見ると・・、それぞれのビットに1が設定されるみたいなので問題ありません。 でも、加算というと誤解が生まれますね。 論理和による合成と訂正します。
関数名 object.Attributes; 関数説明 指定したファイルまたはフォルダの属性の取得及び、 設定を提供するプロパティ。 引数 object・・・・・・Fileオブジェクトまたは、Folderオブジェクト 戻り値 指定したファイルまたはフォルダの属性値 [属性値]
値 | 内容 | 備考 |
---|---|---|
0 | 標準ファイル | 全ての属性値がない状態 |
1 | 読み取り専用ファイル | 取得と設定可 |
2 | 隠しファイル | 取得と設定可 |
4 | システムファイル | 取得と設定可 |
8 | ディスクドライブボリュームラベル | 取得のみ可 |
16 | ディレクトリ | 取得のみ可 |
32 | アーカイブファイル | 取得と設定可 |
64 | ショートカットファイル | 取得のみ可 |
128 | 圧縮ファイル | 取得のみ可 |
[サンプルコード]
// // ファイル&フォルダ操作 // // 指定したパスのファイルの属性の取得と設定。 // // 属性の種類 var FATT_NORMAL = 0; // 標準ファイル var FATT_READONLY = 1; // 読み取り専用ファイル(取得と設定可) var FATT_HIDDEN = 2; // 隠しファイル(取得と設定可) var FATT_SYSTEM = 4; // システムファイル(取得と設定可) var FATT_VOLUME = 8; // ディスクドライブボリュームラベル(取得のみ可) var FATT_DIRECTORY = 16; // ディレクトリ(取得のみ可) var FATT_ARCHIVE = 32; // アーカイブファイル(取得と設定可) var FATT_ALIAS = 64; // ショートカットファイル(取得のみ可) var FATT_COMPRESSED = 128; // 圧縮ファイル(取得のみ可) // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // Fileオブジェクトを取得 var file = fs.GetFile( "C:/TEST/Info.txt" ); // 変更前の読取専用属性を取得 if( file.Attributes & FATT_READONLY ) WScript.Echo( "変更前:読取専用ファイル" ); else WScript.Echo( "変更前:書き込み可能ファイル" ); // 読取専用属性を反転(読取専用だった場合書き込み可) file.Attributes += file.Attributes & FATT_READONLY ? -FATT_READONLY : FATT_READONLY; // 変更後の読取専用属性を取得 if( file.Attributes & FATT_READONLY ) WScript.Echo( "変更後:読取専用ファイル" ); else WScript.Echo( "変更後:書き込み可能ファイル" ); // オブジェクトを解放 fs = null;
[実行結果]
「C:/TEST」の階層の「Info.txt」ファイルの変更前の読取専用の属性値をメッセージボックスで表示し、読取専用属性値を反転します。 そして、変更後の読取専用の属性値を表示します。 つまり、変更前が読取専用ファイルなら書き込み可能ファイルに・・。 変更前が、書き込み可能ファイルなら読取専用ファイルに属性が変更されます。
特殊フォルダを取得
マイドキュメントやデスクトップ等の特殊フォルダのパスを取得するには別の方法もあります。 それを実現するには以下のプロパティを使用します。 アカウントによってマイドキュメントやデスクトップのパスは違います。 今回紹介するものはアカウントを気にする必要がなくなるので便利です。
関数名 object.SpecialFolders( sp_name ); 関数説明 特殊フォルダを管理するコレクション。 sp_nameに指定した特殊フォルダ名をしていすることで、特殊フォルダへのパスを 取得することが出来ます。 引数 object・・・・・・WshShellオブジェクト sp_name ・・・・・取得する特殊フォルダ名 [特殊フォルダ名]
特殊フォルダ名 |
---|
AllUsersDesktop |
AllUsersStartMenu |
AllUsersPrograms |
AllUsersStartup |
Desktop |
Favorites |
Fonts |
MyDocuments |
NetHood |
PrintHood |
Programs |
Recent |
SendTo |
StartMenu |
Startup |
Templates |
[サンプルコード]
// // ファイル&フォルダ操作 // // 特殊フォルダのパスを表示する。 // // Shell関連の操作を提供するオブジェクトを取得 var sh = new ActiveXObject( "WScript.Shell" ); // デスクトップのパスを表示 var path = sh.SpecialFolders( "Desktop" ); WScript.Echo( path ); // オブジェクトを解放 sh = null;
[実行結果]
デスクトップへの絶対パスを表示します。
パスからファイル名を取得
パス文字列から、ファイル名だけを取得するには以下の関数を利用することで実現できます。
関数名 object.GetFileName( path ); 関数説明 指定したパスの最後のファイル名またはフォルダ名部分を取得する。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・ファイルパスまたはフォルダパス 戻り値 pathで指定したパスの最後のファイル名または、フォルダ名
[サンプルコード]
// // ファイル&フォルダ操作 // // パスからファイル名部分だけを取得する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // パスからファイル名を取得 var path = "C:/Info.txt"; var name = fs.GetFileName( path ); WScript.Echo( name ); // オブジェクトを解放 fs = null;
[実行結果]
「C:/Info.txt」というパスから「Info.txt」だけを取得し、メッセージボックスで表示されます。
パスから親の階層のパスを取得
パスから一つ上の階層のパスを取得するには以下の関数を利用することで実現できます。
関数名 object.GetParentFolderName( path ); 関数説明 指定したパスのファイルまたはフォルダの親フォルダのパスを取得する。 引数 object・・・・・・FileSystemObjectオブジェクト path・・・・・・・ファイルパスまたはフォルダパス 戻り値 pathで指定したパスのファイルまたは、フォルダの親フォルダのパス
[サンプルコード]
// // ファイル&フォルダ操作 // // パスから親の階層のパスを取得する。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // パスから親の階層のパスを取得 var path1 = "C:/Info.txt"; var path2 = fs.GetParentFolderName( path1 ); WScript.Echo( path2 ); // オブジェクトを解放 fs = null;
[実行結果]
「C:/Info.txt」というパスから一つ前の階層、つまり「C:/」だけを取得し、メッセージボックスで表示されます。
ファイルサイズを取得
指定したファイル及び、フォルダの容量を確認するには以下のプロパティを利用することで実現できます。 GetFile()関数についてはファイル名を設定&取得を参照してください。 GetFolder()関数については指定階層の全ファイルを取得を参照してください。
プロパティ名 object.Size; プロパティ説明 指定したパスのファイルまたはフォルダの容量をバイト単位で取得します。 フォルダパスを指定した場合、そのフォルダ内に含まれている全てのフォルダ、 ファイルのサイズを取得できます。 引数 object・・・・・・FileオブジェクトまたはFolderオブジェクト 戻り値 ファイルまたは、フォルダの容量(バイト単位)
[サンプルコード1]
// // ファイル&フォルダ操作 // // 指定したパスのファイルの容量を表示。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // Fileオブジェクトを取得 var file = fs.GetFile( "C:/TEST/Info.txt" ); // サイズを表示 WScript.Echo( "Info.txtは" + file.Size + "バイト" ); // オブジェクトを解放 fs = null;
[実行結果1]
「C:/TEST」フォルダの「Info.txt」ファイルの容量がメッセージボックスで表示されます。
[サンプルコード2]
// // ファイル&フォルダ操作 // // 指定したパスのファイルの容量を表示。 // // ファイル関連の操作を提供するオブジェクトを取得 var fs = new ActiveXObject( "Scripting.FileSystemObject" ); // Folderオブジェクトを取得 var folder = fs.GetFolder( "C:/TEST" ); // サイズを表示 WScript.Echo( "C:/TESTは" + folder.Size + "バイト" ); // オブジェクトを解放 fs = null;
[実行結果2]
「C:」ドライブの「TEST」フォルダの容量がメッセージボックスで表示されます。
テキストファイル操作へ | 目次 | ショートカットファイル操作へ |