2017-05-21 2 views
0

Das Folgende ist der Kopierbefehl.In-Skript-Befehl zum Kopieren aller Dateien im aktuellen Verzeichnis in einen anderen Ordner in Stata

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

Allerdings möchte ich alles tun, Dateien im aktuellen Verzeichnis kopieren und in ein anderes Verzeichnis einfügen. Ich hoffe, dass dies getan wird, ohne dass ich die Dateinamen jeder Do-Datei angeben muss. Wie ist das möglich?

Von Link https://www.stata.com/statalist/archive/2006-08/msg00620.html

Ich versuchte

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

so konnte ich zumindest im aktuellen Ordner kopieren. Aber ich weiß immer noch nicht, wie man alle Dateien in einen anderen Ordner kopiert.

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

Zweite Lösung.

Kann ich nur den Dateinamen der aktuellen Do-Datei abrufen, und kopieren Sie dann diese Do-Datei in einen anderen Ordner?

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

spricht über etwas, aber "c (tmpdir)" erhält nur Verzeichnisnamen.

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

ich mehr Forschung tat und diesen rückwärts Arbeiten https://ideas.repec.org/c/boc/bocode/s457628.html

+1

Bitte fragen Sie verschiedene Fragen in gesonderten Beiträgen. Das lässt Leute, die antworten könnten, wählen und es macht das Forum für andere Leute klarer. Der Hauptzweck ist hier nicht, als Helpline zu fungieren, sondern ein Archiv nützlicher Threads aufzubauen. –

Antwort

0

gefunden: die Die aktuelle Do-Datei ist kein klar definiertes Konzept. Do-Dateien können geschachtelt werden, so dass Stata mit a.do starten könnte, die b.do aufruft, die c.do aufruft .... Also, was ist die aktuelle Do-Datei? Alle von ihnen.

Wie Sie fast sagen, Sie eine Liste von Dateien einer bestimmten Art im aktuellen Verzeichnis von (zB) bekommen

local filelist : dir . files "*.do" 

Kopieren auf bar erfordert, dass Sie nur bar zu erwähnen, obwohl es Sie scheint wollen Ändern Sie auch den Dateinamen:

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

Verwendung eines Schrägstrichs ist ratsam, auch unter Windows. See the discussion here and its references.

Nützliche Funktionen hier sind online und entsprechend in Stata dokumentiert:

help extended fcn 
+0

Vielen Dank! Der Befehl mvfiles (den ich von ssc installieren muss) erlaubte mir, alle .do-Dateien im aktuellen Verzeichnis in ein anderes Verzeichnis zu verschieben. Durch "aktuelle" do-Datei, ja kann es mehrdeutige Bedeutung haben. Es könnte nur a.do sein. Es ist gut, wenn ich die Codes zum Kopieren von Dateien in eine .do-Datei schreibe, dann wird eine .do-Datei in einen anderen Ordner kopiert. Alternativ könnten auch a.do und b.do und c.do (die von a.do ausgeführt werden) alle in einen anderen Ordner kopiert werden, aber nicht in d.do (was nicht von a.do ausgeführt wird). Wenn solche Dinge gemacht werden können, wird das fantastisch.Ich werde nie aus den Augen verlieren, was ich lief. – user42459

Verwandte Themen