Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch-Datei: Datei auslesen, verarbeiten und Bilder kopieren

Frage Entwicklung Batch & Shell

Mitglied: mylittleweb

mylittleweb (Level 1) - Jetzt verbinden

01.07.2013 um 12:05 Uhr, 2406 Aufrufe, 15 Kommentare, 2 Danke

Hallo Community,

ich möchte eine kleine Batch-Datei schreiben.

Dazu habe ich eine CSV oder Text-Datei (jeh nach dem, was besser ist). Die Einträge wären dabei durch ein Semikolon getrennt (art1;art2;art3;art4) (Dabei bin ich flexibel, sollten die Einträge so schlecht weiter zu verarbeiten sein, kann ich sie auch anders eintragen lassen.)

Zudem habe ich einen Ordner voller Bilder (D:\OrdnerVollerBilder).


Die Batch-Datei soll nun:
Alle Einträge der CSV oder Text Datei einlesen, überprüfen, welche Bilder mit einem der Einträge anfangen und diese dann in einen anderen Ordner kopieren.


Beispiel:

Datei:
art1;art2;art3

Bilder im Ordner:
art1.jpg
art2_käsekuchen.jpg
art3.jpg
art4.jpg


In einen neuen Ordner kopiert werden sollten hierbei nun:
art1.jpg
art2_käsekuchen.jpg
art3.jpg



Kann mir jemand helfen?

Grüße,
Jürgen


Mitglied: colinardo
01.07.2013, aktualisiert um 12:39 Uhr
Hallo Jürgen,
warum machst du einen zweiten Thread mit dem selben Inhalt auf ??

Bau deine CSV besser so auf
art1 
art2 
art3
dann kannst du folgendes benutzen(Zeile 2-4 an deine Umgebung anpassen):
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
set IMAGEFOLDER=D:\OrdnerVollerBilder 
03.
set TARGETFOLDER=D:\Zielordner 
04.
set CSVFILE=c:\csv.txt 
05.
 
06.
for /f "tokens=*" %%k IN ('type "%CSVFILE%"') DO @( 
07.
   set nr=%%k 
08.
   for %%l IN ("!IMAGEFOLDER!\!nr!*.jpg") DO @( 
09.
      move "%%~fl" "!TARGETFOLDER!" 
10.
11.
)
und lösche bitte einen Thread von den beiden ...
Grüße Uwe
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 12:35 Uhr
Hallo Uwe,

der neue Thread wurde erstellt, weil der andere schlecht beschrieben war. Der alte wurde nun natürlich gelöscht.


Nun habe ich deinen Code übernommen und angepasst, jedoch funktioniert es nicht (es werden keine Bilder kopiert)

Mein Code:
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION  
02.
set IMAGEFOLDER=C:\Users\jrg\Documents\test\test\kokoloco  
03.
set TARGETFOLDER=C:\Users\jrg\Documents\test\test\hopfen  
04.
set CSVFILE=C:\Users\jrg\Documents\test\test\test.csv 
05.
  
06.
for /f "tokens=*" %%k IN ('type "%CSVFILE%"') DO @(  
07.
   set nr=%%k  
08.
   for %%l IN ("!IMAGEFOLDER!\!nr!*.jpg") DO (  
09.
      move "%%~fl" "!TARGETFOLDER!"  
10.
   )  
11.
)
Grüße, Jürgen
Bitte warten ..
Mitglied: colinardo
01.07.2013 um 12:38 Uhr
hast du deine CSV wie ich geschrieben habe angepasst ?
also untereinander..
art1 
art2 
art3
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 12:45 Uhr
Ja habe ich.

Eine kleine, jedoch sehr wichtige Bemerkung noch, die ich vergessen habe und wahrscheinlich liegt es komplett daran.

Die Bilder fangen nicht alle mit "art" an.

Sie können "gustav1" "perter23" oder halt "art2" heißen.
Bitte warten ..
Mitglied: colinardo
01.07.2013, aktualisiert um 12:58 Uhr
Zitat von mylittleweb:
Sie können "gustav1" "perter23" oder halt "art2" heißen.
das war mir klar.
Hier funktioniert das ganze aber einwandfrei...
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 12:59 Uhr
Hier mal meine CSV-Datei

http://www.file-upload.net/download-7783943/test.csv.html (auf den weißen Download-Button mit dem grünen Pfeil links klicken, die restlichen sind Werbung)


Stimmt eventuell mit dieser etwas nicht?
Bitte warten ..
Mitglied: colinardo
01.07.2013 um 13:10 Uhr
die ist i.O.
dann mach halt mal das @echo off raus und starte die Batch mal in einer Konsole, und sieh nach was für einen Fehler er Dir bringt.
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 13:22 Uhr
Ich schätze mal, das & danach muss ich dann auch noch löschen, oder?

Dann läuft es durch, ohne Fehlermeldung.
01.
c:\test\hopfen>test.bat 
02.
 
03.
c:\test\hopfen>setlocal ENABLEDELAYEDEXPANSION 
04.
 
05.
c:\test\hopfen>set IMAGEFOLDER=C:\test\kokoloco 
06.
 
07.
c:\test\hopfen>set TARGETFOLDER=C:\test\hopfen 
08.
 
09.
c:\test\hopfen>set CSVFILE=C:\test\csv\test.csv 
10.
 
11.
c:\test\hopfen>for /F "tokens=*" %k IN ('type "C:\test\csv\test.csv"') DO @( 
12.
set nr=%k 
13.
 for %l IN ("!IMAGEFOLDER!\!nr!*.jpg") DO (move "%~fl" "!TARGETFOLDER!"  ) 
14.
)
Bitte warten ..
Mitglied: colinardo
01.07.2013 um 13:25 Uhr
Zitat von mylittleweb:
Ich schätze mal, das & danach muss ich dann auch noch löschen, oder?
klar...
sind im Pfad IMAGEFOLDER wirklich deine Bilder ? oder habe wir uns da mit der Benennung der Variablen missverstanden.
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 13:39 Uhr
im Pfad IMAGEFOLDER liegen meine Bilder. Ich schätze so ist es verständlicher, wenn die Ordner richtig benannt sind:

01.
c:\movefiles\bat>test.bat 
02.
 
03.
c:\movefiles\bat>setlocal ENABLEDELAYEDEXPANSION 
04.
 
05.
c:\movefiles\bat>set IMAGEFOLDER=C:\movefiles\imagefolder 
06.
 
07.
c:\movefiles\bat>set TARGETFOLDER=C:\movefiles\targetfolder 
08.
 
09.
c:\movefiles\bat>set CSVFILE=C:\movefiles\csv\test.csv 
10.
 
11.
c:\movefiles\bat>for /F "tokens=*" %k IN ('type "C:\movefiles\csv\test.csv"') DO 
12.
 @( 
13.
set nr=%k 
14.
 for %l IN ("!IMAGEFOLDER!\!nr!*.jpg") DO (xcopy "%~fl" "!TARGETFOLDER!"  ) 
15.
)
Funktionieren tut es leider trotzdem nicht
Bitte warten ..
Mitglied: Endoro
01.07.2013, aktualisiert um 16:28 Uhr
Hallo Jürgen,

kannst du mal testen:

01.
@echo OFF &setlocal 
02.
set "IMAGEFOLDER=C:\movefiles\imagefolder" 
03.
set "TARGETFOLDER=C:\movefiles\targetfolder" 
04.
set "CSVFILE=C:\movefiles\csv\test.csv" 
05.
for /F usebackq %%k IN ("%CSVFILE%") DO xcopy "%IMAGEFOLDER%\%%k*.jpg" "%TARGETFOLDER%"
lg,
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 17:05 Uhr
Das Funktioniert, danke!
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 17:13 Uhr
Leider muss ich jedoch nun noch etwas präziser werden, wenn es darum geht etwas zu kopieren.

Das Bild im Ordner darf nur kopiert werden, wenn es komplett dem Namen in der CSV-Datei entspricht, oder wenn es komplett dem Namen in der CSV-Datei entspricht, danach einen Unterstrich hat und der Rest ist dann wieder egal. Beispiel:


CSV-Eintrag
hkzt

Bilder
hkzt
hkzt_ad
hkztbs


Kopiert werden sollen:
hkzt
hkzt_ad
Bitte warten ..
Mitglied: colinardo
01.07.2013 um 17:27 Uhr
01.
@echo OFF &setlocal 
02.
set "IMAGEFOLDER=C:\movefiles\imagefolder" 
03.
set "TARGETFOLDER=C:\movefiles\targetfolder" 
04.
set "CSVFILE=C:\movefiles\csv\test.csv" 
05.
for /F usebackq %%k IN ("%CSVFILE%") DO ( 
06.
   xcopy "%IMAGEFOLDER%\%%k.jpg" "%TARGETFOLDER%" 
07.
   xcopy "%IMAGEFOLDER%\%%k_*.jpg" "%TARGETFOLDER%" 
08.
)
Bitte warten ..
Mitglied: mylittleweb
01.07.2013 um 17:31 Uhr
Funktioniert! Vielen Dank an alle Helfer! ;)

Grüße Jürgen
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch nur neueste Datei mit bestimmten Dateianfang kopieren (3)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH ini Datei Datei auslesen (2)

Frage von Juergen42 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...