저는 스크립트 작성이 처음이고이 작업을 수행 할 수 없습니다. 공간이없는 경로로 파일을 옮길 수 있지만 가능하면 공간과 함께 작동하고 싶습니다.
.cmd 파일이있는 폴더에 여러 Office 업데이트를 추출하고 싶습니다. 배치 파일을 모든 컴퓨터에서 사용할 수 있도록하기 위해 다른 컴퓨터에서 실행하기 위해 한 곳에서만 변경하면되는 경로 변수를 설정했습니다. 문제는 경로에 공백이 있다는 것입니다. 정의에서 경로를 따옴표로 묶으면 cmd.exe는 파일 이름을 추가하고 전환하기 전에 경로를 따옴표로 묶고 “명령 줄 구문 오류”와 함께 배치가 실패합니다. 따옴표가 없으면 “내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.”와 함께 실패합니다.
테스트를 위해 도움말 스위치를 사용할 수있을 때까지 사용하고 있습니다. 8.3 파일 / 폴더 이름 (예 : My Documents as 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 파일을 만들 때 항상 경로를 큰 따옴표로 묶습니다. (화면을 닫지 않도록 PAUSE를 추가했습니다.)
예를 들면 :
"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"\...)
이것이 도움이되기를 바랍니다.