VBS-BATCH symlink-creator ne fonctionne plus
Bonjour,
J'ai depuis un certain temps maintenant un "symlink-creator" qui me sert énormément pour mes rangements.
Hors, je soupçonne que depuis que j'ai effectué la mise à jour W7x64 kb2819745 (powershell4) pour le bon fonctionnement d'un programme, mon script ne fonctionne plus.
Est-ce un problème connu ?
Contenu de la partie vbs du symlink-creator :
Code:
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
|
Const ForReading = 1, ForWriting = 2, ForAppending = 8, CreateIfNeeded = true
set fso = CreateObject("Scripting.FileSystemObject")
set file = fso.OpenTextFile("symlink-creator_source.txt", ForWriting, CreateIfNeeded)
dim fname
sourcepath = inputbox("Full source path (inside empty folder) :")
If IsEmpty(sourcepath) Then
WScript.Quit 1
End If
myscript = sourcepath
file.write myscript
file.close
set file = fso.OpenTextFile("symlink-creator_target.txt", ForWriting, CreateIfNeeded)
targetpath = inputbox("Full target path (the place of the actual folder) :")
If IsEmpty(sourcepath) Then
WScript.Quit 1
End If
myscript = targetpath
file.write myscript
file.close
CreateObject("WScript.Shell").Run "2.Symlink-creator.bat", 2
WScript.Quit 1 |
Et voici le contenu du batch qui désormais loop sur la demande de privilège admin :
Code:
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 |
Je remarque au passage que le dossier "%SYSTEMROOT%\SysWOW64\config\system" n'existe pas... aucune idée si c’était le cas avant :roll:
Attention de ne pas exécuter ces codes si vous avez des travaux non sauvegardés, la boucle empêche d'utiliser le système et le seul moyen que j'ai trouvé d'en sortir est de rouvrir une session.
Merci d'avance pour votre aide.