WinFuture-Forum.de: Batch-Datei Bilder kopieren - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch-Datei Bilder kopieren Kopieren einer Datei in mehrere Unterordner


#1 Mitglied ist offline   jowa1961 

  • Gruppe: Mitglieder
  • Beiträge: 11
  • Beigetreten: 21. April 17
  • Reputation: 1

geschrieben 06. November 2018 - 10:20

Hallo zusammen,

ich habe ein kleines Problem. Ich habe eine Ordnerstruktur, deren Hauptordner "Galerie" heißt. Darunter gibt es diverse Unterordner, die aus einer 4-stelligen Zahl bestehen, also z.B. 0024. Darunter kommt jeweils ein Unterordner "Wohnung", wieder darunter kommen mehrere Unterordner , z.B. "0024.0145", "0024.0146", usw. In jedem dieser Unterordner gibt es einen weiteren Unterordner namens "Expose".

In einem komplett anderen Ordner (außerhalb von "galerie" gibt es eine Bilddatei, die den Namen "0024-Bild" hat. Diese Datei soll nun in jeden Expose-Ordner kopiert und dort in "exp_hauptbild" umbenannt werden.

Ich schicke mal ein Screenshot der Ordnerstruktur mit, ebenso ein Screenshot der Batch-Datei, die ich schon habe, um genau dieses Bild in einen Unterordner "Galerie\0024\Hauptbild" zu verschieben.

Seht Ihr eine Möglichkeit, dass eine Batch-Datei alle Unterordner in "Wohnung" durchläuft und die Dateiin jeden Unterordner reinkopiert? Der zweite Teil der Unterordner (also in meinem Beispiel 0145 und 0146 sind immer unterschiedlich und auch nicht immer aufeinanderfolgend. Diese Weerte können also nicht als Variablen verwendet werden.

Anhänge

Ordnerstruktur
Beispieldatei

Angehängte Miniaturbilder

  • Angehängtes Bild: Ordner.png
  • Angehängtes Bild: Beispieldatei.png

0

Anzeige



#2 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 190
  • Beigetreten: 30. Juni 12
  • Reputation: 8

geschrieben 06. November 2018 - 15:26

ein Screenshot einer Batch ist sinnfrei, kann man schlecht kopieren und nach deinen Wünschen abändern...

hier mal ein Versuch, ist ungetestet: (hiermit wird die original-jpg nicht verschoben/gelöscht)
@echo off
chcp 1252>NUL

for %%a in (*.jpg) do (call :loop "%%a")
echo.&echo Fertig&echo.&pause&goto :eof


:loop
   set "datei=%*"
   set zahl=%datei:~0,4%
   echo %datei% wird bearbeitet
   for /d %%b in (q:\galerie\%zahl%\Wohnung\*) do (
      copy "%datei%" "%%b\Expose\exp_hauptbild.jpg"
      if errorlevel 1 echo Error beim Kopieren von %datei%
   )
goto :eof

Dieser Beitrag wurde von MasterP82 bearbeitet: 06. November 2018 - 15:27

0

#3 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.353
  • Beigetreten: 20. Juli 07
  • Reputation: 974

geschrieben 06. November 2018 - 17:57

Erstmal würd ich was anderes nehmen als Batch. Macht sich nicht gut für sowas.

PowerShell wäre eine Idee. Eventuell, wenn andere Scriptsprachen bekannt sind, auch so eine.

Übergabeparameter wäre vermutlich am besten die Datei selber, damit man die aufs Script ziehen kann. Oder einfach die Objektnummer (geh ich mal davon aus daß das das ist), also hier die 0024.

Dann müßte man zunächst auf die Jagd nach der Datei namens "<NUMMER>-Bild.jpg" gehen. Macht sich mit PowerShell gut; da kann man dieses Dateiobjekt einfach in eine Variable stecken.

Dann alle Unterordner GALERIE / <NUMMER> / Wohnung auflisten (Nummer wieder die übergebene 0024 oder halt aus dem Dateinamen NUMMER-bild.jpg abgeleitet) und das Bildobjekt in jeden diesen Ordner verlinken(*). Namen der Unterordner sind dann egal.

(*) Wenn sich das Hauptbild und die Galerie auf DEMSELBEN Volume befinden, dann kann man per Batch mklink (in allen anderen Fällen fsutil hardlink ...) einen Hardlink anlegen. Damit wird statt einer Kopie nur eine Referenz angelegt und das Bild nimmt nur genau EINMAL Platz weg, nicht "Anzahl der Ordner mal Bilddateigröße". Insbesondere kann man das Bild bearbeiten und dann sind alle Referenzen gleich mit aktualisiert (es gibt ja nur das eine Bild).
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#4 Mitglied ist offline   jowa1961 

  • Gruppe: Mitglieder
  • Beiträge: 11
  • Beigetreten: 21. April 17
  • Reputation: 1

geschrieben 09. November 2018 - 12:11

Hallo MasterP82,

das funktioniert leider nicht. Sehe ich das richtig, dass die Datei (z.B. 0024.jpg) sich in dem Ordner befinden muss, in dem sich auch diese batch befindet? Das Programm wechselt dann in ein anderes Verzeichnis und kopiert die Datei in alle Unterverzeichnisse \galerie\Zahl\Wohnung\*\expose unter dem Namen exp_hauptbild.jpg?
0

#5 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 190
  • Beigetreten: 30. Juni 12
  • Reputation: 8

geschrieben 09. November 2018 - 15:03

Hatte es so verstanden, dass alle Bilder in einem anderen gemeinsamen Ordner liegen, und dort müsste dich bat hin.
Welchen Fehler hast du denn? Ich glaube die Anführungszeichen in der 4ten Zeile müssen weg → (call :loop %%a)
0

#6 Mitglied ist offline   jowa1961 

  • Gruppe: Mitglieder
  • Beiträge: 11
  • Beigetreten: 21. April 17
  • Reputation: 1

geschrieben 10. November 2018 - 11:20

Hallo MasterP82,

ich habe es geschafft, vor allem Dank Deiner Hilfe. Ich liste mal meine Datei unten auf. Der "call"-Befehl in der 5. Zeile ruft nur eine Unterdatei auf, die die Bilder anschließend verschiebt. Vielleicht packe ich bei Gelegenheit mal alles in eine Datei, aber im Moment läuft alles.

Die Bilder liegen übrigens alle in dem Ordner, in dem sich die Batch befindet.


@echo off
chcp 1252>NUL

for %%a in ("*.jpg") do set datei=%%a&call :loop
echo.&echo Fertig&echo.&pause
call UnterdateiHauptbilder.bat


:loop
set zahl=%datei:~0,4%
echo %zahl%
echo %datei% wird bearbeitet
for /d %%b in (q:\galerie\%zahl%\Wohnung\*) do echo %%b&echo %datei%&copy %datei% %%b\expose\exp_hauptbild.jpg
if errorlevel 1 echo Error beim Kopieren von %datei%
goto :eof

Vielend Dank nochmal an Alle und schönes Wochenende.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0