Last active
August 29, 2015 14:21
-
-
Save hymkor/7582192ce58c0e4aaf7b to your computer and use it in GitHub Desktop.
mklink が使いにくいので JScript でラッパー作った(ln.cmd)- バッチファイル化 & ハードリンク・ジャンクションの時は同一セッションで実行するようにした
This file contains 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
@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: |
Author
hymkor
commented
Jul 22, 2015
- Revision 2 (2015/7/14)
- 「-s」が無い時はハードリンク・ジャンクションを使うようにした
- Revision 3 (2015/7/23)
- バッチファイル化
- ハードリンク・ジャンクションの時は同一セッションで実行するようにした
今後は https://github.com/zetamatta/Jatchfiles にて管理します
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment