Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batch Programmierung (Order öffnen mit Schleife)

Empfohlene Antworten

Veröffentlicht

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!

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]

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.

Achso Ok, wenn jedesmal ein anderer Inhalt in der Datei ist ist das nicht das Richtige.

Alles klar. Bin derzeit noch auf der Suche nach einer Lösung. Genaugenommen will ich die Datei quasi duplizieren und gleichzeitig umbenennen.

Trotzdem Danke für deine Hilfe!

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]

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.