我今天对此感到困惑--使用do文件中的命令动态地设置Stata中的工作目录是可能的?例如(至少在PC上),您可以根据正在运行的文件的位置设置命令行中的目录,使用:
%cd%
因此,在批处理文件开头的命令(如下面的命令)将自动将目录设置为保存批处理文件的位置:
cd %cd%
它在用户中运行得很好。对于do (检测/输出到局部变量,打开的do-文件保存在运行它的机器上的位置)有任何方法吗?这样做的目的是获得以下更流畅的版本,当多个用户被同步到Dropbox文件夹并且特定的文件路径在不同用户之间不相同时,就会检测出正确的用户路径:
#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 ;
谢谢!!
发布于 2014-01-29 14:50:24
我不认为有一步解决方案,但您可以将全局宏定义添加到每台机器上的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文件上指定正确的路径。
发布于 2015-01-31 01:45:34
据推测,do文件位于当前工作目录中。如果是这样的话,您可以将cre转速值c(pwd)保存到一个本地或全局宏中,然后调用该宏:
全球当前"
c(Pwd)‘“
使用$currentdir/mydata.dta,清除
https://stackoverflow.com/questions/21416894
复制相似问题