Skip to content

Instantly share code, notes, and snippets.

@snaka
Created June 2, 2012 05:28
Show Gist options
  • Select an option

  • Save snaka/2856766 to your computer and use it in GitHub Desktop.

Select an option

Save snaka/2856766 to your computer and use it in GitHub Desktop.
[wsh]特定のフォルダを除外しつつ特定の名前を持つフォルダを抽出
<package>
<job id="EnumFolders">
<object id="fso" progid="Scripting.FileSystemObject"/>
<script language="JScript"><![CDATA[
// 除外するパターン
var excludes = createFilter([".svn", "Branches"]);
// 抽出するパターンを配列から生成する
var includes = createFilter([
"Hoge",
"Fuga",
"Piyo",
]);
// 指定されたフォルダ配下を列挙
var folder = fso.GetFolder("d:\\Projects\\HogeHoge");
enumSubFolders(folder);
// 配列から正規表現文字列を生成
function createFilter(targets) {
var re = new ActiveXObject("VBScript.RegExp");
var patterns = [];
for (var i = 0; i < targets.length; i++) {
patterns.push("^" + targets[i] + "$");
}
re.Pattern = patterns.join("|");
return re;
}
// フォルダを列挙する関数
function enumSubFolders(folder) {
var subFolders = new Enumerator(folder.SubFolders);
for (; !subFolders.atEnd(); subFolders.moveNext()) {
var sub = subFolders.item();
// if match ecludes pattern
if (excludes.Test(sub.Name)) {
continue;
}
// if match includes pattern
if (includes.Test(sub.Name)) {
WScript.Echo(sub.Path);
}
// sub folders
enumSubFolders(sub);
}
}
]]></script>
</job>
</package>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment