批处理文件中的 %1 未在 Windows 10 中注册

批处理文件中的 %1 未在 Windows 10 中注册

我正在尝试为某个文件类型的安装程序创建批处理文件。问题是,每当我运行批处理文件时,%1 就会消失,并且不会应用于 ftype。相反,它只剩下引号。这是代码。

@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

这是由于某种原因未显示 %1 的输出。

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

答案1

因此我的解决方案是使用 %%1 而不是 %1,因为双百分比会显示 % 而不是查找参数。

答案2

我认为问题在于批处理文件是由 执行的command.com,而不是cmd.exe。IExpress 毕竟是一种非常古老的产品,可以追溯到 Windows 早期(我真的不推荐使用它)。

您需要使用cmd现代命令解释器在 IExpress 中明确执行批处理文件,如下所示:

cmd.exe /c file.bat argument

相关内容