WSH(jscript)で再帰的にショートカット作成

第1引数でショートカットを置くフォルダーを指定して、第2引数以降でショートカットを作りたいファイルのあるフォルダーを指定する

var linkDir = WScript.Arguments(0)
var fso = new ActiveXObject("scripting.FileSystemObject")
var shell = new ActiveXObject("WScript.Shell")

function makeShortcut(dirPath){
    var folder = fso.getFolder(dirPath)
    var subFolders = new Enumerator(folder.subFolders)
    for(;!subFolders.atEnd(); subFolders.moveNext()){
        makeShortcut(subFolders.item())
    }

    var files = new Enumerator(folder.files)
    for(; !files.atEnd(); files.moveNext()){
        var srcFile = files.item()
        var baseName = fso.getBaseName(srcFile)
        var linkFile = fso.buildPath(linkDir, baseName + ".lnk")
        var shortcut = shell.CreateShortcut(linkFile)
        shortcut.TargetPath = srcFile
        shortcut.Save()
    }
}

for(var i = 1; i < WScript.Arguments.length; i++){
    makeShortcut(WScript.Arguments(i))
}