WSH(JScript) でファイル一覧を取得する

概要:

WSH(JScript)で引数のディレクトリー配下のファイル一覧を取得する

注意:
  • wsh_extends.js および、 WshExtends共通ライブラリー(JScript) を参照
  • .svn ディレクトリーは無視
  • サイズが0のファイルは無視
  • ファイル名が /.*\.(bak|swp|log)$|~$|.* - コピー.*/i に当てはまるファイルは無視
ファイル:

list.wsf(スタンドアローン版) (Shift_JIS CR/LF)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="list">
<?job error="true" debug="true" ?>
<runtime>
  <description>ファイル一覧を出力する。</description>
  <unnamed name="folderPath" helpstring="フォルダーの絶対パス" many="false" required="1" />
  <example>例: list.wsf targetFolder &gt; result.txt</example>
</runtime>
<object id="objShell"  progid="WScript.Shell" />
<object id="objFs"  progid="Scripting.FileSystemObject" reference="yes" />
<script language="JScript" src="wsh_extends.js" />
<script language="JScript">
//<![CDATA[
  // WScript.exeで起動されている場合、CScript.exeで起動しなおす。
  WshExtends.ensureCScript();
//  WScript.Echo(WshExtends.getArgumentsString());
  // 引数を配列で取得
  var ary_args = WshExtends.getArgumentsArray();
  if (ary_args.length == 0) {
    WScript.Arguments.ShowUsage();
  } else {
    try {
      WshExtends.enumFiles(
        WScript.Arguments.Unnamed.Item(0),
        function(objFile) {
          if (0 < objFile.Size) {
            if (!/.*\.(bak|swp|log)$|~$|.* - コピー.*/i.test(objFile.Path)){
              WScript.Echo(objFile.Path);
//              WScript.Echo('名前     :' + objFile.Name);
//              WScript.Echo('サイズ    :' + objFile.Size);
//              WScript.Echo('種類     :' + objFile.Type);
//              WScript.Echo('作成日    :' + objFile.DateCreated);
//              WScript.Echo('最終アクセス日:' + objFile.DateLastAccessed);
//              WScript.Echo('最終更新日  :' + objFile.DateLastModified);
            }
          }
        },
        true, //< サブディレクトリーを再帰処理
        function(objDirectory) {
          // .svn ディレクトリーは無視
          return (!/.svn/i.test(objDirectory.Name));
        }
      );
      WScript.Echo('complete.');
    } catch(e) {
      objShell.Popup(e.message, 0, WScript.ScriptName, 64);
    }
  }
  WshExtends.pause();
//]]>
</script>
</job>
</package>