Zum Inhalt springen

Batch Programmierung (Order öffnen mit Schleife)


Spanplatte

Empfohlene Beiträge

Hallo, ich bin neu hier und vielleicht kann mir jemand helfen. Ich hoffe ich bin bei "Windows Betriebssysteme" richtig mit meinem Anliegen.

Ich habe mich in letzter Zeit vermehrt mit Batch-Dateien und deren Progmmierung beschäftigt. Kleinere Aktionen sind auch kein Problem. Mein Hauptanliegen konnte ich aber leider noch nicht lösen.

Ich habe auf meiner Festplatte einen Hauptordner mit sehr vielen Unterordnern (~600). Ungefähr so:

D:\Hauptordner\44 unwichtige Dinge

D:\Hauptordner\Am Anfang war das A

D:\Hauptordner\Bestimmt Sogar

D:\Hauptordner\Chromosom XY

...

D:\Hauptordner\Xylophon lernen leicht gemacht

D:\Hauptordner\Zum Schluss das Z

Jeder dieser Unterordner hat eine Datei namens Inhalt.txt. Diese würde ich nun innerhalb des selben Orners kopieren. Also Inhalt.txt kopieren zu InhaltNEU.txt. Für einen Ordner ist das ja kein Problem. Allerdings weiß ich nicht, wie ich eine Schleife schreibe, die mir in jeden Ordner reinspringt, dann kopiert, dann wieder raus und so weiter.

Geht das überhaupt mit einer Batch? Oder sonst irgendein Vorschlag?

Vielen Dank für eure Hilfe im Vorraus!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe hier ein kleines VBS-Skript für Dich. Da musst du die Datei die kopiert werden soll an einem bestimmten Pfad abgelegt werden.

und dann musst du noch die Pfade ändern aber das sollte kein Problem sein denke ich.

Wie gesagt, Skript kurz anpassen und ausprobieren :D

dim fs, baseFolder, oFolder
dim sDateiname

sQuellPfad="c:\"
sDateiname="Test.exe"
sZielPfad="D:\kunden\"

Set fs = CreateObject("Scripting.FileSystemObject")

if fs.FileExists(sQuellPfad + "\" +sDateiname)=true then

set baseFolder = fs.GetFolder(sZielPfad)

for each oFolder in baseFolder.SubFolders

if fs.FolderExists( oFolder.Path + "\dsas\bin\" ) = true then
fs.CopyFile sQuellPfad+"\"+sDateiname, oFolder.Path + "\dsas\bin\"+sDateiname, true
else
msgbox "Datei existiert nicht! Pfad:"+oFolder.Path + "\dsas\bin\"+sDateiname
end if
if fs.FolderExists( oFolder.Path + "\dsas\lohn\bin\" ) = true then
fs.CopyFile sQuellPfad+"\"+sDateiname, oFolder.Path + "\dsas\lohn\bin\"+sDateiname, true
else
msgbox "Datei existiert nicht! Pfad:"+oFolder.Path + "\dsas\lohn\bin\"+sDateiname
end if

Next

else
msgbox "Ursprung-Datei existiert nicht!"
end if
msgbox "Fertig!", vbOKonly[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Kazuya,

Vielen Dank für die schnelle Antwort und dein Skript!

Ich bin eben erst zum Testen gekommen. Kurzum: In VBS kenne ich mich so gut wie gar nicht aus (bin auch kein Informatiker). So wie ich das lese, brauche ich aber eine Datei "Test.exe" die im Hauptordner liegt, oder? Das wäre dann nicht das, was ich suche. Ich hab in jedem Unterordner eine eigene Datei "Test.exe" die jedesmal einen anderen Inhalt hat. Diese soll in dem Unterordner verbleiben und dazu dann die 'neue', kopierte "Test2.exe" im selben Unterordner. Und dass dann für jeden weiteren Unterordner auch. (Klingt ein wenig unsinnig, ich weiß.)

Kann ich das mit deinem bereitgestellten Skript bewerkstelligen? Falls ja stell ich mich wohl zu doof an und muss mich mehr in die Materie einlesen. Falls nicht? Andere Idee?

Weiterhin DANKE für jede Hilfe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay. Hartnäckigkeit zahlt sich manchmal doch aus. Dein Skript hat mich auf den richtigen Weg geführt. Hier die Lösung:


dim fs, baseFolder, oFolder
dim sDateiname, sZielPfad

sDateiname="Inhalt.txt"
sZielPfad="D:\Hauptordner\"

Set fs = CreateObject("Scripting.FileSystemObject")

set baseFolder = fs.GetFolder(sZielPfad)

for each oFolder in baseFolder.SubFolders

if fs.FileExists(oFolder.Path+"\Inhalt.txt") = true then
fs.CopyFile oFolder.Path+"\"+sDateiname, oFolder.Path+"\"+"InhaltNEU.txt", true
else
msgbox "Datei existiert nicht! Pfad:" + oFolder.Path + "\Inhalt.txt"
end if

Next

msgbox "Fertig!"
[/PHP]

[font=Tahoma]Die drei Stunden haben sich gelohnt, jetzt habe ich eine ungefähre Vorstellung wie VBS-Skripte funktionieren und kann mir da noch ein paar Sachen einbauen, die ich ebenfalls gebrauchen könnte! :)

Viele Grüße![/font]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...