空フォルダを削除する
自作スクリプトです。
emptyfolder.wsf
説明
cscript emptyfolder.wsf /?
空フォルダ削除
使い方 : emptyfolder.wsf [path] [/popup[+|-]]
オプション :
path : 検索するルートパス
popup : 確認ダイアログ
- 引数で指定したフォルダ(サブフォルダを含む)内の空フォルダ(ファイル/フォルダを含まないフォルダ)を削除します。
- 引数指定がない場合、実行ファイルのあるフォルダを基準にして動作します。
- 空フォルダの親フォルダが空フォルダのみを保有する場合、親フォルダを含めて削除します。
- ポップアップによる削除確認を行います。(確認なしを指定可能です)
- CUI実行の場合でも、GUIで確認します。
- sh.Popup関数近辺を変更すれば、修正可能です。お好みで修正ください。
ソースコード
emptyfolder.wsf<?xml version="1.0" encoding="UTF-16" standalone="yes" ?>
<package>
<job>
<runtime>
<?job error="false" debug="true" ?>
<description>空フォルダ削除</description>
<unnamed type="string" required="false" name="path" helpstring="検索するルートパス" />
<named type="boolean" required="false" name="popup" helpstring="確認ダイアログ" />
</runtime>
<script language="JavaScript" src="../common/FileUtility.js"/>
<script language="JavaScript" src="../common/Process.js"/>
<script language="JavaScript"><![CDATA[
/*!
* emptyfolder.wsf v1
*
* Copyright (c) 2018 toshi
* Released under the MIT license.
* see https://opensource.org/licenses/MIT
*/
/**
* 空フォルダ削除
* 引数で指定したフォルダ(サブフォルダを含む)内の
* 空フォルダ(ファイル/フォルダを含まないフォルダ)を削除します。
* 空フォルダの親フォルダが空フォルダのみを保有する場合、親フォルダを含めて削除します。
* ポップアップによる削除確認を行います。(確認なしを指定可能です)
* @requires module:ActiveXObject('Scripting.FileSystemObject')
* @requires module:WScript
* @requires module:FileUtility.js(v10+)
* @requires module:Process.js(v8+)
* @auther toshi(https://www.bugbugnow.net/)
* @license MIT License
* @version 1
* @see 1 - 初版
*/
(function () {
"use strict";
var iscscript = Process.isCScript();
function main(path) {
if (path == null) {
// 引数なし時、カレントディレクトリを使用する
path = sh.CurrentDirectory;
}
// 空フォルダを検索
var dlist = [];
FileUtility.findLeafFolder(function (fullpath, folder) {
if (FileUtility.isEmptyFolder(fullpath)) {
// 上位のフォルダを空(自フォルダのみ)の場合、上位のフォルダを指定する
fullpath = (function emptyTopFolder(fullpath) {
var parent = fs.GetParentFolderName(fullpath);
var files = FileUtility.getFiles(fullpath);
var folders = FileUtility.getFolders(fullpath);
return (files.length == 0 && folders.length == 1)? emptyTopFolder(parent): fullpath;
})(fullpath);
iscscript && WScript.Echo('search: '+fullpath);
dlist.push(fullpath);
}
}, path);
iscscript && WScript.Echo('');
if (dlist.length != 0) {
var ret = 1;
if (Process.getNamedArgument('popup', true)) {
var msg = dlist.join('\n');
if (dlist.length > 16) {
msg = dlist.slice(0, 16).join('\n') + '\n'
+ 'etc...\n\n'
+ 'Number of folders: '+dlist.length;
}
// ファイル削除をユーザ確認
// cscriptの場合でも、GUIで確認する
ret = sh.Popup(msg, 0, '削除', 1);
}
if (ret == 1) {
for (var d=0; d<dlist.length; d++) {
// ファイル削除を実行
iscscript && WScript.Echo('delete: '+dlist[d]);
FileUtility.Delete(dlist[d]);
}
}
} else {
WScript.Echo('空フォルダなし');
}
}
Process.exec(main, true);
})();
]]></script>
</job>
</package>
変更履歴
更新日 | 説明 |
---|---|
2018/06/15 | [v1][add] 初版 |
補足
FileUtility.js, Process.jsファイルが別途必要となります。
結合済みjseファイル
emptyfolder.wsfを1ファイルにまとめたファイルは、以下のリンク先に配置しました。
※拡張子が「.txt」の場合、「.jse」に変更してください。
※文字コードは、UTF-16で保存してください。
※結合には、「WSFファイルを1ファイルに結合する」を使用しています。