1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
@Echo off
set /p fullsourcepath=<symlink-creator_source.txt
set /p fulltargetpath=<symlink-creator_target.txt
::IF NOT DEFINED %fullsourcepath% GOTO :EOF
::IF NOT DEFINED %fulltargetpath% GOTO :EOF
for %%f in ("%fullsourcepath%") do set sourcefolder=%%~nxf
for /D %%D in ("%fullsourcepath%") do set sourcepath=%%~dpD
for %%f in ("%fulltargetpath%") do set targetfolder=%%~nxf
for /D %%D in ("%fulltargetpath%") do set targetpath=%%~dpD
:CHECKTARGETFOLDER
IF EXIST "%targetpath%%targetfolder%" GOTO CHECKSOURCEFOLDER
MD "%targetpath%%targetfolder%"
IF %errorlevel% neq 0 GOTO ERRORCHECKTARGETFOLDER
:CHECKSOURCEFOLDER
IF EXIST "%sourcepath%%sourcefolder%" GOTO MOVESOURCEFOLDER
IF %errorlevel% neq 0 GOTO ERRORCHECKSOURCEFOLDER
:MOVESOURCEFOLDER
robocopy "%sourcepath%%sourcefolder%" "%targetpath%%targetfolder%" /E /XO
IF %errorlevel% equ 8 GOTO ERRORMOVESOURCEFOLDER
IF %errorlevel% equ 16 GOTO ERRORMOVESOURCEFOLDER
RENAME "%sourcepath%%sourcefolder%" "%sourcefolder%_tmp"
IF %errorlevel% neq 0 GOTO ERRORRENAMESOURCEFOLDER
rmdir /s /q "%sourcepath%%sourcefolder%_tmp"
::timeout /t 2 /nobreak
:MKLINK
mklink /D "%sourcepath%%sourcefolder%" "%targetpath%%targetfolder%"
IF %errorlevel% neq 0 GOTO ERRORMKLINK
echo "<<<---| SYMLINK CREATED SUCCESFULLY |--->>>"
echo " "
echo "%targetfolder% Symlink is located in : %sourcepath%"
echo "and redirects to : %targetpath%%targetfolder%"
echo " "
timeout /t 10
GOTO :EOF
:ERRORCHECKTARGETFOLDER
echo "There was a problem with Target path/folder, aborting..."
timeout /t -1
GOTO :EOF
:ERRORCHECKSOURCEFOLDER
echo "There was a problem with Source path/folder, aborting..."
timeout /t -1
GOTO :EOF
:ERRORRENAMESOURCEFOLDER
echo "Couldn't access Source folder, please check if folder is in use, aborting..."
timeout /t -1
GOTO :EOF
:ERRORMOVESOURCEFOLDER
echo "Couldn't access Source/Target folder, please check if folders are in use, aborting..."
timeout /t -1
GOTO :EOF
:ERRORMKLINK
echo "There was a problem while creating symlink, aborting..."
timeout /t -1
GOTO :EOF
:EOF |
Partager