Ответ 1
Попробуйте что-то вроде этого:
SET MY_PATH=C:\Folder with a space
"%MY_PATH%\MyProgram.exe" /switch1 /switch2
Я новичок в написании script и не могу заставить его работать. Я мог бы, если бы я переместил файлы на путь без пробела в нем, но я хотел бы, чтобы он работал с пространством, если бы мог.
Я хочу извлечь кучу обновлений Office в папку с .cmd файлом. Чтобы пакетный файл можно было использовать на любом компьютере, я устанавливаю переменную пути, которую мне нужно изменить только в одном месте, чтобы запустить ее на другой машине. Проблема в том, что путь имеет в нем пробел. Если я помещаю кавычки вокруг пути в определении, cmd.exe помещает их вокруг пути, прежде чем он добавит имя файла и переключатели, и пакет завершится с "Синтаксической ошибкой командной строки". Без кавычек он терпит неудачу, "не распознается как внутренняя или внешняя команда, операционная программа или командный файл".
Для тестирования я использую переключатель справки до тех пор, пока я не получу его работу. Я могу сделать это, используя имя файла/папки 8.3 (например, My Documents как MyDocu ~ 1), но можно ли это сделать другим способом?
Попробуйте что-то вроде этого:
SET MY_PATH=C:\Folder with a space
"%MY_PATH%\MyProgram.exe" /switch1 /switch2
Я использую
set "VAR_NAME=<String With Spaces>"
при обновлении пути:
set "PATH=%UTIL_DIR%;%PATH%"
Здесь есть два варианта. Во-первых, вы можете сохранить путь без кавычек и просто процитировать его позже:
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
удаляет кавычки вокруг аргумента. Это пригодится при передаче имен папок в кавычки, но, как говорилось ранее, в этом конкретном случае это не лучшая идея: -)
Попробуйте это;
создать переменную ниже
SET "SolutionDir=C:\Test projects\Automation tests\bin\Debug"**
Затем замените путь переменной. Обязательно добавьте цитаты для запуска и завершения
vstest.console.exe "%SolutionDir%\Automation.Specs.dll"
Я всегда помещаю путь в двойные кавычки, когда создаю файл .bat. (Я просто добавил ПАУЗА, чтобы он не закрывал экран.)
Например:
"C:\Program Files\PageTech\PCLReader64_131\PCLReader64.exe"
PAUSE
Правильный способ сделать это так:
@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
Самый простой способ исправить эту проблему - поместить имя папки в кавычки:
(cd\New Folder\...) --> (cd\"New Folder"\...)
Надеется, что это поможет.
Если вам нужно сохранить постоянный путь (путь не изменяется при перезапуске cmd)
Запустите командную строку как администратор (щелкните правой кнопкой мыши на cmd.exe и выберите "Запуск от имени администратора" )
В cmd setx path "%path%;your new path"
затем введите
Проверьте правильность пути, набрав путь и нажав enter