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 ?


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.
    

@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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.