Phân tích tham số giao thức (URL) trong tệp bó?


2

Tôi đang cố gắng sử dụng tệp .bat làm trình xử lý giao thức. Ví dụ, URL giao thức là testapp://closevà tôi đặt giao thức để khởi chạy "C:\test.bat" "%1"trong sổ đăng ký.

Các test.battập tin

@echo off
echo %1
pause
exit 0

Về cơ bản những gì tôi muốn làm chỉ là chuyển tham số trong URL closecho một số ứng dụng để thực thi C:/someapp.exe closetuy nhiên %1tham số tôi nhận được là url đầy đủ testapp://close/. Làm cách nào tôi có thể phân tích closetham số ra khỏi %1biến chỉ bằng các lệnh Windows gốc?


Hãy thử điều này:explorer.exe testapp://close
Biswapriyo

Câu trả lời:


2

Bạn có thể sử dụng một FOR /Fvòng lặp và với các tùy chọn "TOKENS=2 DELIMS=/"bạn có thể nhận được giá trị từ chuỗi URL thông qua vào như là đối số đầu tiên tại thực hiện tập lệnh batch sau (giá trị URL) dấu gạch chéo thứ hai của nó ( /) nhưng trước dấu gạch chéo sau ( /) đem lại cho bạn kết quả mong đợi chính xác như bạn mô tả bạn cần từ phần đó của URL.

Bạn có thể SETchuỗi URL được phân tích cú pháp dưới dạng giá trị biến và sử dụng chuỗi đó để chuyển làm đối số đầu tiên cho tệp thực thi ứng dụng. Tôi sẽ đặt một vài ví dụ tập lệnh dưới đây để giúp làm rõ hơn.


# 1. Tập lệnh hàng loạt

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

# 2. Tập lệnh hàng loạt

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

# 1. Kết quả đầu ra tương quan

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

nhập mô tả hình ảnh ở đây


Tài nguyên khác

  • CHO / 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 Đối với Batch Script số 2, bạn có thể cân nhắc sử dụng FOR /F "TOKENS=2 DELIMS=/" %%A IN ("%~1") DO (START "" C:/someapp.exe "%%~A")để bắt đầu thay cho cuộc gọi nhưng tôi nghi ngờ bạn đã biết điều này nhưng muốn đề cập đến trong một nhận xét chỉ trong trường hợp.
Pimp Juice IT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.