Parsing Protocol Parameter (URL) in Batch-Datei?

2

Ich versuche, eine .bat-Datei als Protokollhandler zu verwenden. Die Protokoll-URL lautet beispielsweise testapp://closeund ich habe das zu startende Protokoll "C:\test.bat" "%1"in der Registrierung festgelegt.

Die test.batDatei

@echo off
echo %1
pause
exit 0

Im Wesentlichen möchte ich nur den Parameter in der URL closean eine Anwendung übergeben, um sie auszuführen. C:/someapp.exe closeDer %1Parameter, den ich erhalte, ist jedoch die vollständige URL testapp://close/. Wie kann ich den closeParameter %1nur mit nativen Windows-Befehlen aus der Variablen analysieren ?

Matt
quelle
Versuchen Sie explorer.exe testapp://close
Folgendes

Antworten:

2

Sie können eine Verwendung FOR /FSchleife und mit den Optionen "TOKENS=2 DELIMS=/"können Sie den Wert aus dem URL - String übergibt als erstes Argument bei Batch - Skript - Ausführung erhalten nach ihrem (der URL - Wert) zweiten Schrägstrich ( /) , aber vor dem nächsten Schrägstrich ( /) geben Ihnen das erwartete Ergebnis genau so, wie Sie es von diesem Teil der URL benötigen.

Sie können SETdie analysierte URL-Zeichenfolge als Variablenwert verwenden und diese als erstes Argument an die ausführbare Anwendungsdatei übergeben. Im Folgenden werden einige Beispiele für Batch-Skripte aufgeführt, um eine genauere Erläuterung zu ermöglichen.


# 1. Batch-Skript

@echo off
echo %~1
FOR /F "TOKENS=2 DELIMS=/" %%A IN ("%~1") DO (SET "var=%%~A")
echo %var%
pause
exit 0

# 2. Batch-Skript

@ECHO OFF
FOR /F "TOKENS=2 DELIMS=/" %%A IN ("%~1") DO (CALL C:/someapp.exe "%%~A")
EXIT 0

# 1. Korrelierte Ausgabeergebnisse

C:\Users\User\Desktop> test.bat "testapp://close/"
testapp://close/
close
Press any key to continue . . .

Bildbeschreibung hier eingeben


Weitere Ressourcen

  • FOR / F
  • FOR /?

        delims=xxx      - specifies a delimiter set.  This replaces the
                          default delimiter set of space and tab.
        tokens=x,y,m-n  - specifies which tokens from each line are to
                          be passed to the for body for each iteration.
                          This will cause additional variable names to
                          be allocated.  The m-n form is a range,
                          specifying the mth through the nth tokens.  If
                          the last character in the tokens= string is an
                          asterisk, then an additional variable is
                          allocated and receives the remaining text on
                          the line after the last token parsed.
    
Pimp Juice IT
quelle
@Matt Für Batch-Script Nr. 2 können Sie FOR /F "TOKENS=2 DELIMS=/" %%A IN ("%~1") DO (START "" C:/someapp.exe "%%~A")Start anstelle von Call verwenden, aber ich vermute, Sie wissen das bereits, wollten es aber in einem Kommentar nur für den Fall erwähnen.
Pimp Juice IT