Created
June 2, 2012 05:28
-
-
Save snaka/2856766 to your computer and use it in GitHub Desktop.
[wsh]特定のフォルダを除外しつつ特定の名前を持つフォルダを抽出
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <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