Wywołanie pliku wsadowego ze zmienną łańcuchową jako parametrem pokazuje tylko pierwsze słowo łańcucha

0

Próbuję wywołać plik wsadowy podczas wysyłania zmiennej łańcuchowej, ale gdy próbuję ją pobrać, pokazuje tylko pierwsze słowo łańcucha.

przed wywołaniem innego programu echo go, aby sprawdzić, czy jest zdefiniowany i widzę całe zdanie (pierwszy plik):

set /p input=
echo %input%
call test.bat %input%

ale kiedy próbuję go zdobyć (drugi plik):

set output=%1
echo %output%

pokazuje tylko pierwsze słowo.

Co muszę zrobić, aby przenieść całe zdanie z jednego pliku wsadowego do drugiego za pomocą polecenia call?

7h3w1z4rd
źródło

Odpowiedzi:

0

Powód jest prosty.

Podczas pracy z plikiem wsadowym do każdego parametru można uzyskać dostęp za pośrednictwem% 1,% 2,% 3 ... do 9 parametrów.

Parametry są oddzielone spacją, więc jeśli wprowadzisz więcej słów i oddzielisz je spacją, w istocie staną się one wieloma parametrami. Rozwiązanie jest proste, umieść% input% w cudzysłowie, aby plik wsadowy zrozumiał, że ma to być jeden parametr. Twój skrypt staje się:

set /p input=
echo %input%
call test.bat "%input%"
LPChip
źródło
Teraz jedynym pytaniem jest to, jak usunąć cytaty z danych wyjściowych ...: /
7h3w1z4rd
0

Jeśli dane wejściowe zawierają spacje, musisz je wprowadzić za pomocą cudzysłowów, aby partia mogła przechwycić cały parametr jako jeden zawierający spacje.

Teraz, w drugiej partii, wystarczy dodać ~symbol do parametru w następujący sposób:

REM Note the use of ~ after the percentage symbol

set output=%~1
echo %output%
Fran Moreno
źródło