Установите переменную пути с пробелами в пути в Windows .cmd или командном файле

Я новичок в написании сценариев и не могу заставить его работать. Я мог бы, если бы переместил файлы в путь без пробела, но я бы хотел, чтобы он работал с пробелом, если бы мог.

Я хочу извлечь кучу обновлений Office в папку с файлом .cmd. Чтобы сделать пакетный файл пригодным для использования на любом компьютере, я установил переменную пути, которую мне нужно изменить только в одном месте, чтобы запустить его на другом компьютере. Проблема в том, что в пути есть пробел. Если я помещу кавычки вокруг пути в определении, cmd.exe помещает их вокруг пути, прежде чем он добавляет имя файла и переключается, и пакет завершается с ошибкой «Ошибка синтаксиса командной строки». Без кавычек он не работает с «не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл».

Для тестирования я использую переключатель справки, пока я не смогу заставить его работать. Я могу сделать это, используя имя файла /папки 8.3 (например, Мои документы как MyDocu ~ 1), но можно ли это сделать по-другому?

88 голосов | спросил marcerickson 5 SatEurope/Moscow2009-12-05T06:08:33+03:00Europe/Moscow12bEurope/MoscowSat, 05 Dec 2009 06:08:33 +0300 2009, 06:08:33

8 ответов


0

Попробуйте что-то вроде этого:

SET MY_PATH=C:\Folder with a space

"%MY_PATH%\MyProgram.exe" /switch1 /switch2
ответил aphoria 5 SatEurope/Moscow2009-12-05T07:17:57+03:00Europe/Moscow12bEurope/MoscowSat, 05 Dec 2009 07:17:57 +0300 2009, 07:17:57
0

Я использую

set "VAR_NAME=<String With Spaces>"

при обновлении пути:

set "PATH=%UTIL_DIR%;%PATH%"
ответил koko 3 +04002013-10-03T16:25:02+04:00312013bEurope/MoscowThu, 03 Oct 2013 16:25:02 +0400 2013, 16:25:02
0

Здесь есть два варианта. Во-первых, вы можете сохранить путь без кавычек и просто указать его позже:

set MyPath=C:\Program Files\Foo
"%MyPath%\foo with spaces.exe" something

Другой вариант, который вы можете использовать, - это подпрограмма, которая позволяет не заключать в кавычки строки (но в этом случае это на самом деле не очень хорошая идея, поскольку вы добавляете кавычки, удаляете их и снова добавляете их снова без пользы):

set MyPath="C:\Program Files\Foo"
call :foo %MyPath%
goto :eof

:foo
"%~1\foo.exe"
goto :eof

%~1 удаляет кавычки вокруг аргумента. Это удобно при передаче имен папок в кавычках, но, как уже было сказано, в данном конкретном случае это не лучшая идея: -)

ответил Joey 6 SunEurope/Moscow2009-12-06T15:24:59+03:00Europe/Moscow12bEurope/MoscowSun, 06 Dec 2009 15:24:59 +0300 2009, 15:24:59
0

Попробуйте это;

  1. создайте переменную, как показано ниже

    SET "SolutionDir=C:\Test projects\Automation tests\bin\Debug"**
    
  2. Затем замените путь на переменную. Обязательно добавьте кавычки для начала и конца

    vstest.console.exe "%SolutionDir%\Automation.Specs.dll"
    
ответил Shiran Jayawardena 15 AMpWed, 15 Apr 2015 11:16:21 +030016Wednesday 2015, 11:16:21
0

Я всегда помещаю путь в двойные кавычки при создании файла .bat. (Я просто добавил ПАУЗУ, чтобы экран не закрывался.)

Например:

"C:\Program Files\PageTech\PCLReader64_131\PCLReader64.exe"
PAUSE
ответил JoBaxter 10 AMpWed, 10 Apr 2013 02:34:35 +040034Wednesday 2013, 02:34:35
0

Правильный способ сделать это так:

@ECHO off
SET MY_PATH=M:\Dir\^
With Spaces\Sub Folder^
\Dir\Folder
:: calls M:\Dir\With Spaces\Sub Folder\Dir\Folder\hello.bat
CALL "%MY_PATH%\hello.bat"
pause
ответил djangofan 10 AMpWed, 10 Apr 2013 06:06:56 +040006Wednesday 2013, 06:06:56
0

Самый простой способ решить эту проблему - поместить имя папки в кавычки:

(cd\New Folder\...) --> (cd\"New Folder"\...)

Надеется, что это поможет.

ответил user5528279 5 42015vEurope/Moscow11bEurope/MoscowThu, 05 Nov 2015 11:18:39 +0300 2015, 11:18:39
0

Если вам нужно сохранить постоянный путь (путь не изменяется при перезапуске cmd)

  1. Запустите командную строку от имени администратора (щелкните правой кнопкой мыши на cmd.exe и выберите запуск от имени администратора)

  2. в cmd    setx path "%path%;your new path"    затем введите

  3. Проверьте правильность выбора пути, набрав путь и нажав клавишу ввода

ответил mpmpeiris 2 J000000Saturday11 2011, 18:33:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132