Top-Themen

Aktuelle Themen (A bis Z)

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
Kommentar vom Moderator Biber am 17.06.2010 um 21:04:09 Uhr
Zitat von any-key:
Batch Script - Dateien nach Namen in Ordner Sortieren und umbennen
Ich weiss nicht.... macht ihr das wirklich unabsichtllch?
Kann doch eigentlich nicht sein, dass es nie richtig geschrieben wird...
GELÖST

Batch Script - Dateien nach Namen in Ordner Sortieren und umbennen

Frage Entwicklung Batch & Shell

Mitglied: any-key

any-key (Level 1) - Jetzt verbinden

17.06.2010, aktualisiert 21:04 Uhr, 8279 Aufrufe, 6 Kommentare

Eine Liste von Bilddateien soll in eine vorgegeben Ordnerstruktur kopiert werden und dann umbenannt werden in Abhängigkeit vom Dateinamen.

Hallo Batch Scripter,

ich habe einige Bilddateien, die in eine vorgegebene Ordnerstruktur kopiert werden müssen.

Die Struktur sieht in etwa so aus:

Alter NameOrdner Neuer Name
Bild_A01f01d0.tifW A01Null - n00.tif
Bild_A01f01d1.tifW A01Eins - n00.tif
Bild_A01f02d0.tifW A02Null - n00.tif
Bild_A01f02d1.tifW A02Eins - n00.tif
Bild_A02f01d0.tifW B01Null - n00.tif
Bild_A02f01d1.tifW B01Eins - n00.tif
Bild_A02f02d0.tifW B02Null - n00.tif
Bild_A02f02d1.tifW B02Eins - n00.tif

Die Dateien Bild_A01.. A02..A03...liegen alle im gleichen Hauptordner und sollen dann abhängig vom Namen in den entsprechenden Unterordner kopiert werden.
Also z.B. A01f01 in Order "W A01" und A01f02 in "W A02", hingegen A02f02 in "W B02" oder A04f05 in Order "W D05".

Die entsprechenden Unterordner sind schon vorhanden und in diesen liegen bereits Bilder, die den neuen Namen tragen. Diese sollen gelöscht werden und die kopierten Bilder sollen deren Namen bekommen, der immer gleich ist, mit Ausnahme des Anfangs, der von der letzen Ziffer im alten Dateinamen abhängig ist. Die Ordennamen und Bildernamen reichen von "W A01" - "W A12" bis "W H01" - "W H12". Also insgesamt 96 Unterordner, wobei es nicht immer alle 96 gibt.

Ich habe leider keine Ahnung von shell-scripten und wäre für Hilfe sehr dankbar.

vielen Dank. any-key
Mitglied: bastla
17.06.2010 um 18:09 Uhr
Hallo any-key und willkommen im Forum!

Wenn ich die Struktur richtig interpretiere, sollte das etwa so zu machen sein (ungetestet):
01.
@echo off & setlocal 
02.
set "Hauptordner=D:\Bilder" 
03.
 
04.
set C=%temp%\ConvertFilename.vbs 
05.
>%C% echo D=WScript.Arguments(0):T=Array("Null","Eins"):B=Chr(CInt(Mid(D,7,2))+64):N=Mid(D,10,2):WScript.Echo "W "^&B^&N^&"_"^&T(Mid(D,13,1))^&" - n00.tif" 
06.
 
07.
pushd "%Hauptordner%" 
08.
for /f %%i in ('dir Bild_*.tif') do for /f "tokens=1-2 delims=_" %%a in ('cscript //nologo %C% %%i') do copy %%i "%%a\%%b" 
09.
popd
Grüße
bastla
Bitte warten ..
Mitglied: any-key
21.06.2010 um 19:23 Uhr
Hallo bastla,

danke erstmal fürs Willkommen heißen und noch viel mehr für Deinen Lösungsansatz.

Die Lösung sieht für mich als nicht-programmierer sehr elegant aus und hat mich einige Zeit gekostet zu durchblicken.
Leider bricht das Script mit der Fehlermeldung Type Mismatch: 'Cint' und Type Mismatch: 'Mid' in Zeile 1,47 bzw. Zeile 1,88 ab.
Wenn ich diese Fehlermeldung richtig verstehe, erkennt das Script keine Zahlen an diesen Positionen, die aber im Dateinamen da sind.

Noch eine vielleicht triviale Frage, aber wenn ich mir die Ausgabe vorher anschauen möchte, reicht es dann "copy" durch "echo" zu ersetzen oder wie würde man das realisieren?

tausend dank.

Grüße, any-key

PS: @Biber: Sorry für den Vertipper, kann man das noch ändern?
Bitte warten ..
Mitglied: Biber
21.06.2010 um 22:04 Uhr
Moin any-key,

Vertipper sind hier gern gesehene Mitglieder...

Grundsätzlich kann du immer hinterher den Beitrag (oder einen Kommentar) editieren, wenn du angemeldet bist und "Editieren" auswählst.
bei Tippfehlern, auf die schon jemand Bezug genommen hat, ist es in der Regel zu spät

A propos Tippfehler...

bastla hat die auch einen zum Debuggen überlassen... bei der DIR-Anweisung in Zeile 8 fehlt der Parameter /B.
Der bewirkt, dass nur die Pfad/Dateinamen vom DIR-Befehl angezeigt werden, nicht die Header ("Volume in Laufwerk D heißt..." und Zusammenfassung ("X Dateien in Y Verzeichnissen")

Wenn du mit em ECHO-Befehl ein "was-wäre-wenn" simulieren willst, dann wäre meine Empfehlung:

01.
:: bastlasFilesorter.cmd 
02.
@echo off & setlocal 
03.
set "Hauptordner=F:\Schnipsel" 
04.
 
05.
set C=%temp%\ConvertFilename.vbs 
06.
>%C% echo D=WScript.Arguments(0):T=Array("Null","Eins"):B=Chr(CInt(Mid(D,7,2))+64):N=Mid(D,10,2):WScript.Echo "W "^&B^&N^&"_"^&T(Mid(D,13,1))^&" - n00.tif" 
07.
 
08.
pushd "%Hauptordner%" 
09.
for /f %%i in ('dir /b Bild_*.tif') do ECHO for /f "tokens=1-2 delims=_" %%a in ('cscript //nologo %C% %%i') do ....nothing 
10.
for /f %%i in ('dir /b Bild_*.tif') do for /f "tokens=1-2 delims=_" %%a in ('cscript //nologo %C% %%i') do ECHO copy %%i "%%a\%%b" 
11.
 
12.
popd
--> So [mit den Codezeilen 08/09] lasse ich ZWEI FOR-Anweisungen, die bei bastla in EINER Zeile stehen, nacheinander anzeigen.
Eingefügt ist das GROSSgeschriebene ECHO.

Ausgabe bei mir wäre in etwa:
for /f "tokens=1-2 delims=_" %a in ('cscript //nologo C:\DOKUME~1\Biber\LOKALE~1\Temp\ConvertFilename.vbs Bild_A01f01d1.tif') do ....nothing 
for /f "tokens=1-2 delims=_" %a in ('cscript //nologo C:\DOKUME~1\Biber\LOKALE~1\Temp\ConvertFilename.vbs Bild_A02f02d1.tif') do ....nothing 
for /f "tokens=1-2 delims=_" %a in ('cscript //nologo C:\DOKUME~1\Biber\LOKALE~1\Temp\ConvertFilename.vbs Bild_A02f02d0.tif') do ....nothing 
copy Bild_A01f01d1.tif "W A01\Eins - n00.tif" 
copy Bild_A02f02d1.tif "W B02\Eins - n00.tif" 
copy Bild_A02f02d0.tif "W B02\Null - n00.tif"
... bei den drei Testdateien, die ich mir angelegt habe.

Nähere Details kommen ggf. von bastla (falls er mich noch nicht überholt hat)

Grüße
Biber
Bitte warten ..
Mitglied: bastla
21.06.2010 um 22:05 Uhr
Hallo any-key!

Ich hatte zum Testen Deine Beispiele verwendet und die gewünschten Ergebnisse erhalten - direkt von der Kommandozeile nachzuvollziehen mit
D:\>for %i in (Bild_A01f01d0.tif Bild_A01f01d1.tif Bild_A01f02d0.tif Bild_A01f02d1.tif Bild_A02f01d0.tif Bild_A02f01d1.tif Bild_A02f02d0.tif Bild_A02f02d1.tif) do @cscript //nologo %temp%\ConvertFilename.vbs %i 
W A01_Null - n00.tif 
W A01_Eins - n00.tif 
W A02_Null - n00.tif 
W A02_Eins - n00.tif 
W B01_Null - n00.tif 
W B01_Eins - n00.tif 
W B02_Null - n00.tif 
W B02_Eins - n00.tif
Wie Du sicher schon den "Mid"-Teilen entnommen hast, werden die Zeichen 7 und 8 zum Buchstaben umgewandelt, 10 und 11 unverändert übernommen und aus der Ziffer auf Position 13 der Text "Null" oder "Eins" gemacht ...
wenn ich mir die Ausgabe vorher anschauen möchte, reicht es dann "copy" durch "echo" zu ersetzen
Ja, Du kannst aber auch einfach das "echo" unmittelbar vor "copy" schreiben ...

Wenn Du beim Start des Batches (im Beispiel in der Datei "D:\Kopieren.cmd" gespeichert) noch eine Umleitung der Ausgabe anfügst - etwa:
D:\Kopieren.cmd > D:\Ausgabe.txt
kannst Du danach die gesamte Ausgabe per Editor (oder zB Import in Excel) in Augenschein nehmen ...

Grüße
bastla

[Edit] @Biber
Als ob ich Dich schon jemals überholt hätte ...

Danke für's genaue Hinschauen - ich hatte mich leider nur auf die Zerlegung und daher das VBScript konzentriert ...
[/Edit]
Bitte warten ..
Mitglied: any-key
22.06.2010 um 14:05 Uhr
Hey Biber und bastla,

ihr seid großartig. Das klappt wunderbar und mit dem Gerüst kann ich dann die Feinheiten für mein spezielles Problem ausarbeiten.

Ganz lieben dank und alles Gute!

any-key
Bitte warten ..
Mitglied: bastla
22.06.2010 um 14:16 Uhr
Hallo any-key!

Schön, dass es für Dich passt.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Ordner mit Namen sortieren
gelöst Frage von NNAAMMBatch & Shell7 Kommentare

Hallo zusammen, habe mich schon auf dieser Seite umgesehen aber noch nicht die passende Antwort auf meine Frage gefunden. ...

Batch & Shell
Eine Batch zum Sortieren verschiedener Dateien in Ordner
gelöst Frage von JaglagBatch & Shell16 Kommentare

Hallo, da ich leider mit Batch und shell nicht so erfahren bin hoffe das ein findiger User hier weiterhelfen ...

Batch & Shell
Ordner und Datei Name gleich (BATCH)
gelöst Frage von clragonBatch & Shell12 Kommentare

Hey Leute. Simples Problem; Bat to Exe Converter ist nicht sehr sauber. Trotzdem nützlich. Es räumt die Dateien und ...

Batch & Shell
Dateien im Ordner auslesen und umbennen
Frage von jochengBatch & Shell10 Kommentare

Hi Leute Schönen Feiertag zuerst. Ich habe an diesem leider ein Problem. nutze ich um Bilder aus meinem Bilder ...

Neue Wissensbeiträge
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 1 StundeWindows 101 Kommentar

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 3 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner2 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...