2014-01-28 3 views
2

나는 오늘이 문제에 당황하고 있습니다. do 파일의 명령을 사용하여 Stata의 작업 디렉토리를 동적으로 설정할 수 있습니까? 예를 들어 (PC에 적어도), 당신은 당신이 사용하는 실행 파일의 위치에 따라 명령 행에서 디렉토리를 설정할 수 있습니다Stata - do 파일의 파일 경로 또는 위치를 반환하는 명령

%cd% 

그래서 명령 등의 배치의 시작 부분에 다음과 같이 파일은 자동으로 배치 파일이 저장되는 위치로 디렉토리를 설정합니다.

cd %cd% 

이것은 사용자간에 매우 잘 작동합니다. do-file (실행중인 컴퓨터에서 열린 do-file이 저장된 위치를 로컬 변수로 감지/출력)에 대해 동일한 작업을 수행 할 수있는 방법이 있습니까? 아이디어는 여러 사용자가 보관 용 폴더 및 특정 파일 경로에 동기화되어 적절한 사용자 경로를 감지 다음의 부드러운 버전을 얻을 동일하지 않습니다에서 사용자입니다 :

#delim ; 
if "`c(username)'"=="Steve" { ; cd "C:/Users/Steve/Documents/My Dropbox/ProjectName/" ; }; 
else if "`c(username)'"=="otherperson" {; cd "/Users/otherpersonusingmac/ProjectName/";}; 
else if "`c(username)'"=="anotherperson" {; cd "/anotherpersonsDropboxfilepath/ProjectName/";}; 
# delim cr ; 

감사합니다!

+1

이 글타래에 흥미가있을 수 있습니다 : http://www.stata.com/statalist/archive/2013-07/msg00646.html 어쩌면 당신은'shell' 명령으로 뭔가를 알아낼 수있을 것입니다. –

답변

1

나는 한 단계의 해결책이 있다고 생각하지 않지만 각 컴퓨터의 profile.do 파일에 전역 매크로 정의를 추가 할 수 있습니다. 예를 들어, profile.do 파일에 다음을 추가하십시오.

global DROPBOX "C:/Users/richa_000/Dropbox" 
global SKYDRIVE "C:/Users/richa_000/SkyDrive" 

그런 다음이 매크로를 스크립트에서 cd으로 사용하십시오.

. cd $DROPBOX 
C:\Users\richa_000\Dropbox 

. cd $SKYDRIVE 
C:\Users\richa_000\SkyDrive 

각 컴퓨터의 profile.do 파일에 올바른 경로를 지정하십시오.

+0

고마워요! 이제 모든 사람들이 자신의 컴퓨터에서이 작업을 수행하도록하십시오 ... – SOConnell

-1

아마도 do 파일은 현재 작업 디렉토리에 있습니다. " C (PWD) ' "'

사용 $의 currentdir/mydata.dta currentdir

글로벌 : 그렇다면, 당신은 당신이 다음 호출 할 수있는 로컬 또는 글로벌 매크로에 creturn 값 C (PWD)를 절약 할 수 있습니다 , clear