2017-05-21 111 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

相關問題