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-Key: 197755

Url: https://administrator.de/contentid/197755

Printed on: April 24, 2024 at 05:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Jan 28, 2013 at 10:52:37 (UTC)
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
Member: andimue
andimue Jan 28, 2013 at 11:48:56 (UTC)
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
Member: Winfried-HH
Winfried-HH Jan 28, 2013 at 12:15:27 (UTC)
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.
Member: pieh-ejdsch
pieh-ejdsch Jan 28, 2013 at 12:41:31 (UTC)
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
Member: Winfried-HH
Winfried-HH Jan 28, 2013 updated at 12:55:32 (UTC)
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
Member: andimue
andimue Jan 28, 2013 updated at 13:06:21 (UTC)
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