A solução não era óbvia para mim, mas era muito mais simples do que eu esperava.
Sendo impulsionado por esta dica , percebi que o contexto atual (trabalhando diretório do arquivo em lote do invoker) teve que ser capturado e passado para o arquivo VBScript.
Eu modifiquei meu script amr.bat
da seguinte maneira.
@echo off
:: Let me capture the current working directory
set InvokerCapturedWorkingDirectory=%cd%
:: BatchGotAdmin
::-------------------------------------
REM --> Check for permissions
>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 "%comspec%", "/k C:\cmder\vendor\init.bat %params% & cd /d %InvokerCapturedWorkingDirectory%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:::::::::::::::::::::::::::::::
:: START OF USER CUSTOM CODE ::
:::::::::::::::::::::::::::::::
:: IS NOT NEEDED ANYMORE
::%comspec% /k "C:\cmder\vendor\init.bat %*"
EXIT /B %ERRORLEVEL%
Deixe-me confirmar minhas palavras:
SevocêestivercuriososobreoconteúdodoarquivogeradodoVBScript(queexecutaoarquivoemlotenomodoelevado),aquiestá: