2017-10-20 5 views
0

기존 디렉토리의 절대 경로를 가져와 속성 중 하나를 변경해야합니다. 이 작업을위한 간단한 스크립트를 작성했고 모든 것이 내 리눅스 컴퓨터에서 훌륭하게 작동합니다. Windows 배치 스크립트에서 Sed 명령

[email protected]/ignite-config-path=/c/../standalone/configuration/ignite.xml 

그런 다음 내가 Windows 사용자를위한이 스크립트를 적용 : 같은 있습니다 END_STRONG_1이 스크립트의

SET "IGNITE_PATH=%cd%\standalone\configuration\ignite.xml" 
sed -i -r "s#([email protected]\/scripts-dir-path=).*#\1%SCRIPTS_PATH%#g" .\standalone\configuration\platform-config.properties 

보인다.

SET "IGNITE_PATH=%cd%\standalone\configuration\ignite.xml" 
sed -i -r "s#([email protected]\/ignite-config-path=).*#\1%IGNITE_PATH%#g" .\standalone\configuration\platform-config.properties 

하지만 문제가 있습니다. Windows 박쥐 스크립트의 결과는 다음과 같습니다.

[email protected]/ignite-config-path=C:DESKTOP...STANDALONENFIGURATIONIGNITE.XML 

모든 경로는 Caps Lock에서 단일 단어로 표시되고 일부 단어는 함께 고착 된 것처럼 보입니다.

유닉스와 윈도우에서 다른 구분 기호로 인해이 동작이 발생합니까? 이 경우 해결책은 무엇입니까?

+0

SET "IGNORE_PATH ... – drewster

+0

실제로'sed '가 무엇을 기대하는지 모르겠지만, 경로 구분 기호로 슬래시'/'를 사용하고 싶다면'SET'을 사용하십시오. IGNITE_PATH = % IGNITE_PATH : \ =/% "'당신의 SET 명령 줄 뒤에 ... – aschipfl

+0

@aschipfl 고마워요! 잘 작동합니다. – rnknown

답변

0

나는 도구 sed 모르지만 나는 그것이 유닉스 시스템에서 온다 슬래시 /는 경로 분리 될 것으로 기대 가정합니다.
그러나 Windows 명령 해석기 (cmd)는 경로 구분 기호로 백 슬래시 \을 사용합니다.
그러므로 나는 즉시 SET 명령 줄 끝에서 다음 줄을 삽입하는 것이 좋습니다 :

SET "IGNITE_PATH=%IGNITE_PATH:\=/%" 

이것은 /에 의해 모든 \을 대체 할 sub-string replacement syntax를 사용합니다.