winfried-hh
Goto Top

Dateien bedingungsgesteuert in Unterverzeichnisse kopieren

Hallo Bastla & Co.,

kann ich per Batch/VBS folgende Aufgabe erledigen:


Ausgehend von einem Stammverzeichnis v:\projectroot soll in allen Unterverzeichnissen geschaut werden, ob es dort eine Datei info.txt gibt. In die Unterverzeichnisse, in denen es diese Datei gibt, soll aus dem Stammverzeichnis die Datei info2.txt kopiert werden.

Also, wenn v:\projectroot\...\info.txt existiert,
dann kopiere v:\projectroot\info2.txt nach v:\projectroot\...\info2.txt

Geht das?


Schöne Grüße von der Elbe,
Winfried


Ach übrigens: Schöne Grüße an die ewigen Besserwisser hier: Ihr dürft gern auf "wenig anspruchsvoll" klicken, das scheint für einige hier ja ein richtiges Hobby zu sein. Macht ruhig, das geht mir links rein und rechts wieder raus. Zum Glück gibt es auch Leute, die hier ernsthaft bemüht sind zu helfen. Denen schon mal ein herzliches Dankeschön.

Content-ID: 197755

Url: https://administrator.de/forum/dateien-bedingungsgesteuert-in-unterverzeichnisse-kopieren-197755.html

Ausgedruckt am: 02.04.2025 um 06:04 Uhr

pieh-ejdsch
pieh-ejdsch 28.01.2013 um 11:52:37 Uhr
Goto Top
moin Winfried,

die existens von Dateien/Ordnern überprüfst Du mit einer Rekursiven Schleife - in der CMD-Line:
for /r "v:\projectroot" %i in (info.txt?) do copy v:\projectroot\info2.txt "%~dpi"  

Gruß Phil
andimue
andimue 28.01.2013 um 12:48:56 Uhr
Goto Top
Hi,

kurze Nachfrage bei pieh-ejdsch:

wieso hast du bei (info.txt?) noch das Fragezeichen angehängt ?
Ich erkenne momentan den Sinn nicht - kann aber auch am Montag liegen face-wink

Gruß
Andi
Winfried-HH
Winfried-HH 28.01.2013 um 13:15:27 Uhr
Goto Top
Das funktioniert bei mir nicht. Stattdessen wird die Datei info2.txt unter dem Dateinamen %~dpi in das Verzeichnis kopiert, in dem ich die Zeile ausführe.
pieh-ejdsch
pieh-ejdsch 28.01.2013 um 13:41:31 Uhr
Goto Top
hallo Andi,

das Fragezeichen (Platzhalter ? *) ist dafür, dass es nur diese Dateien findet.
Ohne diese Fragezeichen würden alle Unterordner aufgelistet werden.

@Winfried-HH
in einem Batch sieht die Zeile so aus:
for /r "v:\projectroot" %%i in (info.txt?) do copy v:\projectroot\info2.txt "%%~dpi"  

Gruß Phil
Winfried-HH
Winfried-HH 28.01.2013 aktualisiert um 13:55:32 Uhr
Goto Top
Auch das führt dazu, daß die Datei info2.txt unter dem Dateinamen %~dpi (also ohne das zweite Prozentzeichen) in den Ordner kopiert wird, aus dem heraus ich die Batch aufgerufen habe.

Alles zurück ... es war ein Tippfehler, den ich erst beim zwanzigsten Mal hinschauen gesehen habe ... SORRY und DANKE
andimue
andimue 28.01.2013 aktualisiert um 14:06:21 Uhr
Goto Top
@pieh-ejdsch:

Danke für den Hinweis. Mir war nicht klar (da ich, glaube ich noch nie die /R-Version verwendet habe), dass in der Klammer zwingend eine Wildcard stehen muss. In der Hilfefunktion zum for-Kommando steht das leider so nicht (dort steht nur ganz allgemein, das Platzhalter zuläßig sind).
Erst nach deinem Hinweis hab ich unter http://ss64.com/nt/for_r.html was gefunden:
    FOR /R

    Loop through files (Recurse subfolders)

    Syntax
          FOR /R [[drive:]path] %%parameter IN (set) DO command

    Key
       drive:path  : The folder tree where the files are located.

       set         : A set of one or more files. Wildcards must be used.
                     If (set) is a period character (.) then FOR will
                     loop through every folder.  
    ...
Danke nochmal für den Hinweis

Andi