Wsad plik args.bat
jest dla celów testowych:Batch Argument z cytatami i przestrzeni
@echo off
echo Arguments 1 to 4:
echo.%~1
echo.%~2
echo.%~3
echo.%~4
Plik wsadowy używa ~
usunąć początkowe i końcowe cudzysłów, a powinien on wykazywać następujące wartości dla użytkownika :
Argument 1
This is "Argument 2".
Dla argumentu 1, to proste:
args.bat "Argument 1"
Jednak dla argumentu 2 rzeczy nie działa dobrze, bez względu na to ucieczka sekwencja Staram (znalazłem kilka tutaj na przepełnienie stosu):
// Didn't expect this to work, but for completeness
>args.bat "Argument 1" "This is "Argument 2"."
Arguments 1 to 4:
Argument 1
This is "Argument
2"."
Uciekając z cudzysłów jakoś przechodzi cudzysłowia na:
>args.bat "Argument 1" "This is ""Argument 2""."
Arguments 1 to 4:
Argument 1
This is ""Argument 2"".
Uciekając z daszkiem:
>args.bat "Argument 1" "This is ^"Argument 2^"."
Arguments 1 to 4:
Argument 1
This is "Argument
2"."
Ucieczka z backslash:
>args.bat "Argument 1" "This is \"Argument 2\"."
Arguments 1 to 4:
Argument 1
This is \"Argument
2\"."
Pamiętaj Próbowałem całą masę innych rzeczy (ostatecznie myśli brute-zmuszając rozwiązania, ale stawiając pytanie pierwsze), z których każda prowadzi do wyjścia zabawne, ale nigdy, czego chcę:
>args.bat "Argument 1" ^"This is ^^"Argument^" 2^^"."
Arguments 1 to 4:
Argument 1
This is "Argument" 2".
Czy jest możliwe przekazanie parametru do pliku wsadowego, tak jak chcę, bez zmiany pliku wsadowego? Jeśli nie, czy istnieje sposób na uruchomienie cmd
w trybie specjalnym, aby traktował parametry tak jak ja?
Widziałem rozwiązania służące do wyszukiwania i zamiany podwójnych cudzysłowów, ale naprawdę chcę, aby plik wsadowy pozostawał niezmieniony.
możliwy duplikat [Escaping Double Quotes in Batch Script] (http://stackoverflow.com/questions/562038/escaping-double-quotes-in-batch-script) –
@BenjyKessler: Czytam odpowiedzi tam i w moje pytanie, które napotkacie, wypróbowałem zarówno znaki podwójnego cudzysłowu, jak i znaki ewakuacyjne. Żadna z nich nie działa. –