Batch ORdnername in Dateiname schreiben

LostInWeb

Lt. Junior Grade
Registriert
Jan. 2012
Beiträge
381
FOR-Schleife Dateien kopieren

Hallo,

ich bin gerade etwas ratlos, wie ich mit Batch oder PowerShell ein Skript erstellen kann, das wie folgt funktionieren soll.
Ich habe einen Ordner, wo die Batch liegen wird, dieser Ordner hat mehrere Unterordner und jeder dieser Unterordner enthält eine TXT-Datei, welche den Ordnernamen erhalten soll.

Beispiel

Ausgangszustand:
Fotos\Urlaub2010\liste.txt
Fotos\Urlaub2011\liste.txt
Fotos\Urlaub2012\liste.txt
Fotos\Feier2010\liste.txt
Fotos\Feier2011\liste.txt
Fotos\Feier2012\liste.txt
Fotos\GewünschtesSkript.bat

Nach dem Skript
Endzustand:
Fotos\Urlaub2010\Urlaub2010.txt
Fotos\Urlaub2011\Urlaub2011.txt
Fotos\Urlaub2012\Urlaub2012.txt
Fotos\Feier2010\Feier2010.txt
Fotos\Feier2011\Feier2011.txt
Fotos\Feier2012\Feier2012.txt
Fotos\GewünschtesSkript.bat

Es liegen natürlich nicht nur die Textdateien drinne, sondern auch JPEG-Dateien.

Ich habe mir angeschaut, wie es möglich ist und auch schon verschiedene Skripte. VBS möchte ich nicht haben.
Bei Batch komme ich aber mit den FOR-Schleifen nicht klar. Selbst mit beispielhaften Batch-Skripten mit FOR-Schleifen komme ich nicht klar. Ich würde freuen, wenn mir da jmd helfen könnte, wäre es nett.
 
Zuletzt bearbeitet:
Ich kann hier nur für die bash sprechen.
Iterieren über Dateien funktioniert so:
Code:
for filename in ./*/*; do #welcher Ordner auch immer...
  echo "$filename"
done

Zum Extrahieren des Ordnernames aus einem Pfad benutzt man dirname. Und für das Umbenennen mv.
 
Hallo LostInWeb,

wenn du möchtest, schreibe ich dir gerne ein C# Programm. Wäre dann aber eine .exe Datei.

Peace,
DanNinetyone
 
So nochmal die ganze Sache durchdacht.

Also ich brauch ein Skript, welches mir Dateien in ein Ordner kopiert und diese kopierten Dateien, sollen den Ordnernamen bekommen, aus dem die kommen. Also folgendermaßen solle es am Ende aussehen:
Ausgangszustand:
Fotos\Urlaub2010\liste.txt
Fotos\Urlaub2011\liste.txt
Fotos\Urlaub2012\liste.txt
Fotos\Feier2010\liste.txt
Fotos\Feier2011\liste.txt
Fotos\Feier2012\liste.txt

Nach dem Skript
Endzustand:
Fotos\listen\Urlaub2010.txt
Fotos\listen\Urlaub2011.txt
Fotos\listen\Urlaub2012.txt
Fotos\listen\Feier2010.txt
Fotos\listen\Feier2011.txt
Fotos\listen\Feier2012.txt

Ich komme mit der verdammten FOR-Schleife nicht klar. Irgendwie fehlt mir da noch die Vorstellung. Ich weiß nun, wie ich einen Verzeichnisnamen in eine Variabel schreibe und wie ich die Dateien kopiert bekäme.
Code:
@echo off
for %%* in (.) do set CurrDirName=%%~n*
echo %CurrDirName%
For /F "Delims=" %%i in ('dir *.txt /b /s') do copy "%%i" D:\Fotos\listen\

Ich versuch jetzt mal Schritt für Schritt zu erklären, wie das Skript arbeiten sollte anhand eines Beispiels.

  1. In Ordner "Fotos\Urlaub2010\" gehen.
  2. "liste.txt" kopieren.
  3. "liste-kopie.txt" umbenennen in "Urlaub2010.txt".
  4. "Urlaub2010.txt" in "Fotos\listen\" verschieben.

Ich bekomme es händisch hin, eine Kopie anzulegen, diese umzubenennen, diese zu verschieben. Ich bin aber zu blöd dies in eine FOR-Schleiße zu verpacken, sodass ich eine BATCH-Datei habe.

Vielleicht kann mir da jemand helfen?!
 
Zurück
Oben