< December 2012 | August 2017 |

August 31, 2017

フォルダの複数階層にあるファイルを、フォルダ名付きのファイル名にリネームして一つの階層にコピーするWindows Script

var fileSystem = new ActiveXObject('Scripting.FileSystemObject');
var OUTPUT_DIR = "Renamed";
var scriptFile = fileSystem.GetFile(WScript.ScriptFullName);
var targetFolder = scriptFile.ParentFolder;
var outputPath = fileSystem.BuildPath(targetFolder.Path, OUTPUT_DIR);

if(!fileSystem.FolderExists(outputPath)){
    fileSystem.CreateFolder(outputPath);
}

(function (folder, prefix){
    if(prefix.length)prefix += "_";
    for(var e = new Enumerator(folder.SubFolders); !e.atEnd(); e.moveNext()){
        var sf = e.item();
        arguments.callee(sf, prefix + sf.Name);
    }
    for(var e = new Enumerator(folder.Files); !e.atEnd(); e.moveNext()){
        var f = e.item();
        if(f.Path == scriptFile.Path)continue;
        f.Copy(fileSystem.BuildPath(outputPath, prefix + f.Name));
    }
})(targetFolder, "");


WScript.echo(outputPath + "にファイルをコピーしました。");