%1 en el archivo por lotes no se registra en Windows 10

%1 en el archivo por lotes no se registra en Windows 10

Estoy intentando crear un archivo por lotes para un instalador de un tipo de archivo. El problema es que cada vez que ejecuto el archivo por lotes, %1 desaparece y no se aplica a ftype. En cambio, sólo quedan las comillas. Aquí está el código.

@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"
:--------------------------------------    

assoc .beest=beestTest
ftype beestTest="C:\BeestFileType\TextEditor.exe" -f "%1" %*
pause

Aquí está el resultado que no muestra %1 por algún motivo.

.beest=beestTest
beestTest="C:\BeestFileType\TextEditor.exe" -f ""
Press any key to continue . . .

Respuesta1

Entonces mi solución fue tener %%1 en lugar de %1 porque los porcentajes dobles hacen que muestre % en lugar de buscar un parámetro.

Respuesta2

Creo que el problema es que el archivo por lotes lo ejecuta command.com, no cmd.exe. Después de todo, IExpress es un producto muy antiguo, que data de los inicios de Windows (realmente no puedo recomendar su uso).

Debe ejecutar el archivo por lotes explícitamente en IExpress usando cmd, un intérprete de comandos moderno, como este:

cmd.exe /c file.bat argument

información relacionada