2017-05-21 67 views
0

以下是复制命令。In-script命令将当前目录中的所有文件复制到Stata中的另一个文件夹

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

但是,我想复制当前目录中的所有文件,并粘贴到另一个目录。我希望这样做不需要指定每个文件的文件名。这怎么可能?

从链接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文件的文件名,然后将这个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

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

正如你几乎说了,你可以通过(例如)得到某样在当前目录中的文件列表

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和相应的内塔塔:

help extended fcn 
+0

谢谢!命令mvfiles(我必须通过ssc安装)允许我将当前目录中的所有.do文件移动到另一个目录。按“当前”做文件,是的,它可能有含糊不清的含义。它可能只是一个.do。如果我将编写用于复制a.do文件中的文件的代码,然后将a.do文件复制到另一个文件夹,那将会很好。或者,它可能是a.do和b.do和c.do(它们由a.do运行)的所有内容都被复制到另一个文件夹,但不是d.do(不由a.do运行)。如果能够做出这样的事情,那将会很棒。我永远不会看到我跑过的东西。 – user42459

相关问题