Muszę wywołać plik wsadowy za pomocą polecenia, które ma wykonać. Ta komenda zawiera pseudo-zmienną% cd%, która rozwija się do bieżącego katalogu. Powiedz, chcę uciekać test "echo %cd%"
. Problemem jest %cd%
rozszerza się wcześniej test
jest nazywany.
Zwykle można uciec od zmiennej, podwajając znaki procentu, ale nie wydaje się to mieć zastosowania do pseudo-zmiennych. Na przykład, echo %%ProgramFiles%%
wydrukuje %ProgramFiles%
, ale echo %%errorlevel%%
wydrukuje %0%
. Co ja robię?
źródło
test "echo ^%cd^%"
wydruki%cd%
zamiast bieżącego katalogu. Potrzebuję, aby pseudo-zmienna została zachowana, gdy przekażę ją do skryptu, ale rozwinęłam ją wewnątrz.Nie mam zbyt wiele szczęścia bez zaangażowania CALL. Z tym testem.bat:
przywoływać test.bat wywołanie echo ^% cd ^% działa zgodnie z oczekiwaniami. Lub umieszczając CALL wewnątrz test.bat:
i wzywanie test.bat echo ^% cd ^% Prace. (W każdym razie jest to bezpieczniejsze, ponieważ jeśli test.bat zostanie wywołany z innego skryptu, przekazanie skryptu do niego nie spowoduje ryzyka przedwczesnego zakończenia).
Przypuszczam, że to działa lepiej dla ciebie (lub jeśli w ogóle możesz pracować) zależy od specyfiki twojego scenariusza.
źródło