Проблема пакетных сценариев Windows - цитирование переменных, содержащих пробелы - PullRequest
3 голосов
/ 10 апреля 2010

Итак, вот моя проблема: Я хочу использовать% cd%, чтобы пользователь мог выполнить скрипт в любом месте, где он хочет его разместить, но если% cd% содержит пробелы, он завершится ошибкой (независимо от кавычек). Если я жестко закодирую путь, он будет функционировать с кавычками, но если это переменная, он потерпит неудачу.

Ошибка: (если% cd% содержит пробелы) "% CD% \ Testing.bat"

Работает: "C: \ Program Files \ Testing.bat"

Есть идеи?

1 Ответ

3 голосов
/ 10 апреля 2010

%CD% - неправильный способ сделать это, поскольку он указывает каталог, в котором пользователь находился при вызове скрипта, а не каталог, в котором находится скрипт.

Вместо этого используйте %~dp0 для извлечения информации о диске и пути из %0:

REM C:\Program Files\test_caller.bat
@echo I am the caller and I reside in: "%~dp0"
@"%~dp0\test.bat"

...

REM C:\Program Files\test.bat
@echo Yippeee!

...

C:\>"\Program Files\test_caller.bat"
I am the caller and I reside in: "C:\Program Files\"
Yippeee!

C:\>e:

E:\>"C:\Program Files\test_caller.bat"
I am the caller and I reside in: "C:\Program Files\"
Yippeee!
...