Stata:在变量中存储带有禁止字符的路径名

Stata:在变量中存储带有禁止字符的路径名,stata,Stata,我正在研究机构A的代码,其中包括 adopath ++ $prog use "$prog/subDirectory/otherFile.do" 实际的do文件是我尽量不更改的,因为我知道在其当前状态下,它将与机构A一起工作 我要定义我自己的配置文件。请执行以使其正常工作,我需要在其中设置$prog。我看不到机构A如何设置他们的配置文件.do,以及它是否包含禁止使用的字符$prog应该包含工作目录,在我的例子中是 global prog "C:\Users\foobar\Google Drive

我正在研究机构A的代码,其中包括

adopath ++ $prog
use "$prog/subDirectory/otherFile.do"
实际的do文件是我尽量不更改的,因为我知道在其当前状态下,它将与机构A一起工作

我要定义我自己的
配置文件。请执行
以使其正常工作,我需要在其中设置
$prog
。我看不到机构A如何设置他们的
配置文件.do
,以及它是否包含禁止使用的字符
$prog
应该包含工作目录,在我的例子中是

global prog "C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog"
据我所知,空格是被禁止的字符,这就是为什么这个设置肯定不起作用。有人建议我用双引号

global prog ""C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog""
在某种程度上,这些程序运行良好,
adopath++$prog
现在运行顺利。但是,第二个命令
use“$prog/subDirectory/otherFile.do”
现在包含一个错误。这是我的问题

  • 第一个最佳选择:是否有一种不同的方法来定义
    $prog
    ,使我能够在不出错的情况下运行代码的其余部分
  • 第二好:是否有安全的方法重写
    使用“$prog/subDirectory/otherFile.do”
    ?也就是说,如果我将其重写为
    use$prog”/subDirectory/otherFile.do“
    ,并且它继续在我的系统上工作,我是否保证它在旧代码工作的地方工作?我可以安全地交换那段代码,同时保证功能的持续性吗
    • 第二好:

      profile.do

      A机构代码

      如果你真的很挑剔,你可以用
      =用于
      =
      ,而
      0
      用于预期的错误代码;例如
      198
      (对于
      无效语法

      此解决方案尊重原始代码,如有必要,将充分处理您的profile.do文件产生的错误

      (同样,如果您的工作目录没有空格,这也不会是一个问题。)

      global prog "C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog"
      
      capture adopath ++ $prog
      if (_rc != 0) adopath ++ "$prog"
      
      use "$prog/subDirectory/otherFile.do"