2010-11-27 7 views
5

내가이 디렉토리 압축 할 가정 〔C :/사용자/xah/ErgoEmacs_Source/ergoemacs/빌드 폴더의 유틸리티 /〕루트 경로를 기록하지 않고 zip 만들기; 프로그램

을 내 내가 출력 디렉토리가 〔C가되고 싶어요 :/사용자/xah/xx2 /〕

(A elisp 프로그램에서 내 현재 디렉토리가 어디있을 수 있습니다. 내가 전화 한 우편) 그래서 내가

zip -r c:/Users/xah/xx2/build-util.zip c:/Users/xah/ErgoEmacs_Source/ergoemacs/build-util/ 

다음이

처럼 전체 경로를 기록합니다 압축 할
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/ (stored 0%) 
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/.svn/ (stored 0%) 
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/.svn/all-wcprops (deflated 56%) 
... 

나는 단순히 build-util로 시작하는 경로를 원한다.

참고 : 저는 프로그램 (elisp)에서 zip을 호출하고 envirenment 변수의 개념을 사용하지 않으려합니다.

일부 우편 매개 변수로 가능합니까?

+1

AFAIK zip에는 tar의 -C 옵션이 없으므로 실행하기 전에 현재 디렉토리를 변경해야합니다. – tokland

+0

hmmm ...'cd c :/Users/xah/ErgoEmacs_Source/ergoemacs; 지퍼 ... ', 이것은 상대 경로를 제공합니다, 이것이 필요한 것입니까? elisp를 사용하여 가능합니까? 덕분에 – ajreal

+0

. 나는 tokland가 그것을 대답했다고 생각한다. 나는 처음에 그것이 문제가되는 dir에 cd하고 싶지 않았다. –

답변

4

이상하게도 Java JDK의 jar를 사용하는 것이 가장 좋습니다.

jar -cMf c : /Users/xah/xx2/build-util.zip -C c :/Users/xah/ErgoEmacs_Source/ergoemacs/build-util /.

"-M"은 jar에 매니페스트 파일을 생성하지 않도록 지시하고 -C는 파일 압축을 시작하기 전에 디렉토리를 변경하도록 지시합니다. 이 문서를 바탕으로 내가 여기에 : http://download.oracle.com/javase/tutorial/deployment/jar/build.html

+0

그건 그렇고, Java jar 아카이브는 단지 zip 파일입니다. 일부 명단 정보. –

4

내가 좋아하는 bash는 기능 중 하나는 pushd입니다, 당신이 현재있는 dirrectory 저장하고 지정한 디렉토리로 이동합니다. reciprocal 함수가 popd되면 pushd 이전에 있던 디렉토리로 돌아 간다. 예를 들어 당신은 당신이 당신이 원하는과 바람을 생각

pushd c:/Users/xah/ErgoEmacs_Source/ergoemacs 
zip -r c:/Users/xah/xx2/build-util.zip build-util/ 
popd 

을한다.

관련 문제