Skip to content

Instantly share code, notes, and snippets.

@cat2151
Forked from 0x60df/ln-s.bat
Last active May 22, 2019 19:11
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 cat2151/56d5aa1e54f719bdc5efc0ed676ebb29 to your computer and use it in GitHub Desktop.
Save cat2151/56d5aa1e54f719bdc5efc0ed676ebb29 to your computer and use it in GitHub Desktop.
Windows bat file for creating symbolic link without cmd(run as administrator).
@echo off
setlocal
set invalidUsage=false
if "%~1"=="" set invalidUsage=true
if "%~2"=="" set invalidUsage=true
if "%invalidUsage%"=="true" (
echo Usage: ln-s TARGET LINK_NAME
exit /b 1
)
set target=%~1
set linkName=%~2
if "%target:~-1,1%"=="\" set target=%target:~0,-1%
if "%linkName:~-1,1%"=="\" set linkName=%linkName:~0,-1%
if not exist "%target%" (
echo Target^(%target%^) does not found.
exit /b 1
)
if exist "%linkName%" (
echo Linkname^(%linkName%^) already exists
exit /b 1
)
if not "%target:~1,1%"==":" set target=%CD%\%target%
if not "%linkName:~1,1%"==":" set linkName=%CD%\%linkName%
set arguments="'/c,mklink,\"%linkName%\",\"%target%\"'"
if exist "%target%\*" set arguments=%arguments%,"/d"
powershell.exe -Command Start-Process ^
-FilePath "cmd" ^
-ArgumentList %arguments% ^
-Verb Runas
endlocal
@cat2151
Copy link
Author

cat2151 commented Sep 2, 2018

半角スペースを含むファイル名やディレクトリ名を扱えるようにしました。
参考ページ:batファイルからPowerShell引数にspaceのあるパスを渡したい

@cat2151
Copy link
Author

cat2151 commented Mar 3, 2019

いつの間にか手元の環境で、すべてディレクトリとして扱われるような動作になっていました。
原因は特定できませんでしたが、取り急ぎ、
if exist "%target%"

if exist "%target%*"
にすることで対処できました。

https://qiita.com/yz2cm/items/8058d503a1b84688af09#%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E5%AD%98%E5%9C%A8%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF

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