Ich versuche, eine Batchdatei für ein Installationsprogramm eines Dateityps zu erstellen. Das Problem besteht darin, dass jedes Mal, wenn ich die Batchdatei ausführe, %1 verschwindet und nicht auf ftype angewendet wird. Stattdessen bleiben nur die Anführungszeichen übrig. Hier ist der Code.
@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
Hier ist die Ausgabe, die aus irgendeinem Grund %1 nicht anzeigt.
.beest=beestTest
beestTest="C:\BeestFileType\TextEditor.exe" -f ""
Press any key to continue . . .
Antwort1
Meine Lösung bestand also darin, %%1 statt %1 zu verwenden, da bei doppelten Prozentsätzen % angezeigt wird, anstatt nach einem Parameter zu suchen.
Antwort2
Ich glaube, das Problem liegt darin, dass die Batchdatei von ausgeführt wird command.com
und nicht von cmd.exe
. IExpress ist schließlich ein sehr altes Produkt, das aus den frühen Anfängen von Windows stammt (ich kann seine Verwendung nicht wirklich empfehlen).
Sie müssen die Batchdatei explizit in IExpress mit cmd
, einem modernen Befehlsinterpreter, wie folgt ausführen:
cmd.exe /c file.bat argument