2017-05-12 1 views
0
을 입력하십시오.

나는 txt 파일을 읽고 echo의 내용을 담은 매우 간단한 배치 스크립트를 가지고 있습니다. 스크립트는이 스크립트의CMD에서

@echo off 
set WORK_BASE_DIR=%~dp0 
set BUILD_TXT=%WORK_BASE_DIR%Build.txt 
echo %BUILD_TXT% 

set PRODUCT_BUILD=0.0 

for /F %%i in ("%BUILD_TXT%") do set PRODUCT_BUILD=%%i 
echo %PRODUCT_BUILD% 

출력은 다음과 같습니다 당신이 볼 수 있듯이

D:\Test Dir\Project1\Build.txt \\Correct 
D:\Test       \\Incorrect 

PRODUCT_BUILD는 파일의 경로가 아닌 파일의 내용으로 설정됩니다. build.txt 파일이 같은 디렉토리에 그것은 단지 하나 개의 라인이 포함되어 나는 for 문에서 ""을 제거하면 1.0.0000

를, 파일 경로에 공백이 포함로 예상된다 발견되지 build.txt 파일 말한다.

내가 누락 된 것이 있습니까? , 또한

for /F "usebackq" %%i in ("%BUILD_TXT%") do set "PRODUCT_BUILD=%%i" 

나에게 추천하자 : 당신이 usebackq 옵션을 지정하지 않는 한, 인용 부호는 리터럴 문자열을 표시 (명령 프롬프트 창에 입력 for /?) for /F의 도움에 따르면

답변

0

위와 같이 인용 부호가있는 set 구문을 사용하면 특수 문자 문제를 방지하고 의도하지 않은 의도하지 않은 후행 공백이 할당 된 값의 일부가되지 않도록 할 수 있습니다. 이것은 command extensions이 활성화되어있는 경우에만 작동하지만 모든 최신 Windows 버전 (Windows NT 기반)의 기본값입니다.