Skip to content

Instantly share code, notes, and snippets.

@hymkor
Last active August 29, 2015 14:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hymkor/7582192ce58c0e4aaf7b to your computer and use it in GitHub Desktop.
Save hymkor/7582192ce58c0e4aaf7b to your computer and use it in GitHub Desktop.
mklink が使いにくいので JScript でラッパー作った(ln.cmd)- バッチファイル化 & ハードリンク・ジャンクションの時は同一セッションで実行するようにした
@if (0) == (0) echo off
cscript //nologo /E:JScript "%~f0" %*
exit /b %ERRORLEVEL%
@end
var args = WScript.Arguments
if( args.length < 2 ){
WScript.Echo("Usage: cscript ln.js [-s] FILENAME TARGET");
WScript.Quit(1);
}
var fsObj = new ActiveXObject("Scripting.FileSystemObject");
var start = 0;
var symbolic = false;
if( args.Item(0) == "-s" ){
symbolic = true;
++start;
}
var src = fsObj.GetAbsolutePathName(args.Item(start+0));
var dst = fsObj.GetAbsolutePathName(args.Item(start+1));
if( fsObj.FolderExists(dst) ){
dst = fsObj.BuildPath(dst,fsObj.GetFileName(src));
}
var opt=""
var action="open"
if( symbolic ){
if( fsObj.FolderExists(src) ){
opt = "/D";
}
action = "runas"
}else{
opt = (fsObj.FolderExists(src) ? "/J" : "/H");
}
var param="/c mklink "+opt+' "'+dst+'" "'+src+'"';
if( symbolic ){
var shellApp = new ActiveXObject("Shell.Application");
shellApp.ShellExecute("cmd.exe",param,"",action);
}else{
var wshell = new ActiveXObject("WScript.Shell");
var oExec = wshell.Exec("cmd.exe " + param);
while( oExec.Status == 0 ){
WScript.Sleep(100);
}
}
WScript.Echo("cmd.exe " + param);
WScript.Echo(" " + src + "\n--> " + dst);
WScript.Quit(0);
// vim:set ft=JavaScript:
@hymkor
Copy link
Author

hymkor commented Jul 22, 2015

  • Revision 2 (2015/7/14)
    • 「-s」が無い時はハードリンク・ジャンクションを使うようにした

@hymkor
Copy link
Author

hymkor commented Jul 22, 2015

  • Revision 3 (2015/7/23)
    • バッチファイル化
    • ハードリンク・ジャンクションの時は同一セッションで実行するようにした

@hymkor
Copy link
Author

hymkor commented Jul 22, 2015

今後は https://github.com/zetamatta/Jatchfiles にて管理します

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment