029.【ESTK】任意の正規表現が名前に含まれないファイルを削除
書いたコード
var myFolder = Folder.selectDialog("フォルダを選択してください"); var myException = [/.+\.pdf/, /.*確認.*\.txt/]; // pdfと確認事項txt以外を削除 removeFiles(myFolder, myException); // 二つ目の引数を指定しなければ全削除 function removeFiles(tgtFolder, exceptionRegArrs) { var flag = false; var tgtFiles = tgtFolder.getFiles(); var tgtFsLen = tgtFiles.length; for (var i = tgtFsLen - 1; i >= 0; i--) { if (tgtFiles[i].constructor.name === "Folder") { removeFiles(tgtFiles[i]); tgtFiles[i].remove() } else { flag = false; if (exceptionRegArrs !== undefined) { for (var j = 0; j < exceptionRegArrs.length; j++) { if (exceptionRegArrs[j].test(decodeURI(tgtFiles[i].name))) { flag = true; continue; } } } if (flag === false) { var tmp = tgtFiles[i].remove(); } } } }
メモ
分かったこと
フォルダオブジェクト.remove();は中にファイルがあるとエラーを出さずスキップされる。
積み残し
- 削除できないファイル/フォルダがあった場合、最後にアラートを出す
削除できないときは戻り値がfalseになる。
最後にまとめてアラートを出したいので、処理するたびに処理結果を配列に貯めていく?