@echo off
:: %1 is source
:: %2 is output

:: Delete it if it existed
if exist "%2" del "%2"

:: Try to create a hardlink (argument are in reverse order). Hide errors if
:: they occur, we have a fallback.
mklink /h "%2" "%1" > nul

:: If it failed, copy it instead. Don't hide errors if it fails.
if errorlevel 1 copy "%1" "%2"