脚本命令将当前目录中的所有do文件复制到Stata中的另一个文件夹

时间:2017-05-21 22:06:59

标签: stata

以下是复制命令。

copy "main.do" "main2.do", replace

但是,我想复制当前目录中的所有do文件,并粘贴到另一个目录。我希望这是在没有我需要指定每个do文件的文件名的情况下完成的。这怎么可能?

来自链接https://www.stata.com/statalist/archive/2006-08/msg00620.html

我试过

cd "C:\Users\Owner\Google Drive\test"
local files : dir "`c(pwd)'" files "*.do"
foreach file in `files' {
    copy `file' "`file'_copied"
}

所以我至少可以在当前文件夹中复制。但我仍然不知道如何将所有文件复制到另一个文件夹。

======================

第二种解决方案。

我可以获取当前执行文件的文件名,然后将此do文件复制到另一个文件夹中吗?

http://www.statalist.org/forums/forum/general-stata-discussion/general/1297295-obtain-name-of-current-do-file

谈论某事,但" c(tmpdir)"只获取目录名称。

==========================

我做了更多研究,发现了https://ideas.repec.org/c/boc/bocode/s457628.html

1 个答案:

答案 0 :(得分:1)

向后工作:当前的do文件不是一个明确定义的概念。 Do文件可以嵌套,因此Stata可以从a.do开始,调用b.do调用c.do ....那么,当前的文件是什么?他们都是。

正如您所说,您可以通过(例如)

获取当前目录中某种文件的列表
local filelist : dir . files "*.do" 

复制到bar只需要提及bar,虽然您似乎也想更改文件名:

foreach f of local filelist { 
    local F : subinstr local f ".do" "2.do", all  
    copy `f'  bar/`F' 
} 

即使在Windows下,使用正斜杠也是谨慎的。 See the discussion here and its references.

此处的有用功能记录为online,并相应地记录在Stata中:

 help extended fcn