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 zum Orden von Dateien in die jeweiligen Ordner!

Frage Entwicklung Batch & Shell

Mitglied: Tiff0588

Tiff0588 (Level 1) - Jetzt verbinden

19.06.2014, aktualisiert 16:15 Uhr, 1983 Aufrufe, 17 Kommentare

Hallo Leute,

ich schreibe gerade an meiner Masterarbeit und arbeite mit einer Menge RAW und TIFF Dateien. Diese liegen wie folgt in einem Ordner (aber auch getrennt in einzelnen Ordner möglich) vor:

TTC00078
TTC00079
TTC00080
TTC00081
...
TTC10078
TTC10079
TTC10080
TTC10081
...
TTC20078
TTC20079
TTC20080
TTC20081
...
TTC30078
TTC30079
TTC30080
TTC30081
...
TTC40078
TTC40079
TTC40080
TTC40081
...
TTC50078
TTC50079
TTC50080
TTC50081

Nun möchte ich aber alle z.B: 78 Dateien in einem Ordner haben und alle 79 in einem Ordner und so weiter.
Das sähe dann so aus:

TTC00078
TTC10078
TTC20078
TTC30078
TTC40078
TTC50078 in einem Ordner und das mit 79, 80 u.s.w.

ich habe leider keine Ahnung von der Materie und auch nicht die Zeit alles manuell in einzelne Ordner zu verschieben. Vielleicht hättet ihr den für mich passenden Quellcode. Ich könnte garnicht sagen, wie dankbar ich euch wäre. Und sry, dass ich euch nach so einem Mist frage.

LG
Mitglied: emeriks
19.06.2014, aktualisiert um 15:48 Uhr
Hi,
wenn die Dateinamen immer die selbe feste Länge haben, dann kanst Du beim MOVE mit Wildcards arbeiten, hier z.B. "??????78" und "??????79" usw.
Die Zahlen kannst Du mit verschachtelten For-Schleifen genrieren.

Bsp. Batch

01.
@echo off 
02.
For %%z in (0 1 2 3 4 5 6 7 8 9) Do For %%e in (0 1 2 3 4 5 6 7 8 9) Do md %%z%%e && move ??????%%z%%e.* %%z%%e
E.
Bitte warten ..
Mitglied: Tiff0588
19.06.2014, aktualisiert um 16:07 Uhr
Hi,

also ich habe keine Ahnung von der Syntax und kann damit leider nichts anfangen. Sry. Die rausgesuchten Dateien müssten auch in einen automatisch angelegten Ordner für den Dateien-Block verschoben werden, da ich sonst ja 500 Ordner selber erstellen muss. Vielleicht geht es auch mit einem Windows-Skript oder so.

LG
Bitte warten ..
Mitglied: emeriks
19.06.2014 um 16:50 Uhr
Äh, eine Batch ist ein "Windows-Skript". So zu sagen. Es läuft auch unter Windows.

Die von mir genannten Zeilen erstellen Ordner von 00 bis 99 und verschieben die Dateien entsprechend. Man kann das auch für 000-499 oder 999 anpassen.

1. Erstelle mit Notepad eine Datei im selben Ordner, in welchem die Bilder sind. Beliebiger Name, aber Dateiendung ".cmd" (nicht .cmd.txt !) (und auch nicht mit Ziffern am Ende ), z.B. MoveFiles.cmd
2. Kopiere den u.g. Code rein und speicher die Datei erneut.
3. starte cmd.exe, gehe auf das Laufwerk und wechsle in den Ordner mit den Bildern.
4. starte die eben erstellte batch

Diese erstellt jetzt Ordner von 000 bis 999 und verschiebt die Dateien entsprechend.

01.
@echo off 
02.
For %%h in (0 1 2 3 4 5 6 7 8 9) Do For %%z in (0 1 2 3 4 5 6 7 8 9) Do For %%e in (0 1 2 3 4 5 6 7 8 9) Do md %%h%%z%%e && move ?????%%h%%z%%e.* %%h%%z%%e
E.
Bitte warten ..
Mitglied: Tiff0588
20.06.2014, aktualisiert um 11:37 Uhr
Hi,
vielen Dank für deine Antwort. Hat super funktioniert. Ich kann dir gar nicht genug danken, super Forum hier :D

LG
Bitte warten ..
Mitglied: emeriks
20.06.2014 um 11:40 Uhr
Bei mir funktioniert der Code. Habe es eben nochmal getestet.

Diese Meldung "Dateiname existiert bereits, oder die Datei konnte nicht gefunden werden" kannste ignorieren. Sie kommt von den vielen Mustern, welches es noch nciht gibt. Wemm es z.B. noch keine Dateien mit xxxxx999 gibt, dann wird es bei 999 eben meckern.

Ich habe den Code nochnmal angepasst. Jetzt werden die Ordner gar bloß erstellt, wenn entsprechende Dateien vorhanden sind.
Immer vorausgesetzt, dass die Dateinamen 8 Zeichen lang sind (plus Endung), wie in Deiner Anfrage dargestellt.

01.
@echo off 
02.
For %%h in (0 1 2 3 4 5 6 7 8 9) Do For %%z in (0 1 2 3 4 5 6 7 8 9) Do For %%e in (0 1 2 3 4 5 6 7 8 9) Do if exist ?????%%h%%z%%e.* (md %%h%%z%%e && move ?????%%h%%z%%e.* %%h%%z%%e)
E.
Bitte warten ..
Mitglied: Tiff0588
20.06.2014 um 11:48 Uhr
Vielen Dank, hat doch super funktioniert, nun hab ich die Funktion "gdal_merge" womit ich alle Tiffs in einem Ordner zu einer gestackten Datei verbinden kann, mit dem Programm OSGeo4W Shell von QuantumGIS. Ist es möglich die einzelnen Ordner zu durchlaufen und die Funktion für die Dateien auszuführen und die entstandene Datei in dem jeweiligen Ordner zu speichern?

LG
Bitte warten ..
Mitglied: bastla
20.06.2014 um 17:39 Uhr
Hallo Tiff0588 und willkommen im Forum!

Eine Schleife über alle Unterordner eines Ordners kannst Du einfach nach folgendem Schema erzeugen:
01.
for /d %%i in ("D:\Ordner mit den Unterordnern\*") do ( 
02.
    pushd "%%i" 
03.
    echo Programm wird gestartet in %%i 
04.
    popd 
05.
)
Anstelle der Ausgabe in Zeile 3 wäre dann der von Dir nicht näher beschriebene Aufruf des Programms "OSGeo4W Shell" durchzuführen, wobei durch das "push" vorweg in den jeweiligen Ordner gewechselt wird, sodass Du keine Pfadangabe für die Quell- und Zieldateien benötigst ...

Grüße
bastla
Bitte warten ..
Mitglied: Tiff0588
30.06.2014 um 17:43 Uhr
He Leute,
ich habe es immer noch nicht geschafft. Ich habe folgenden Code:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET mypath=D:\test\

FOR /F %%i IN ('DIR /B %mypath%*/S *.tif') DO (

SET infile=%%i

gdal_merge -o Stacked.img -of HFA -separate %mypath%!infile! Beschreibung der gdal_merge: http:www.gdal.org/gdal_merge.html

)

wenn ich das mit OSGeo4W Shell ausführe, bekomme ich die Fehlermeldung IndexError: list index out of range

Ich will das der im Verzeichnis D:\test alle Unterordner durchläuft und für alle Dateien mit der Endung .tif die Funktion gdal_merge ausführt, die für jeden Ordner in dem jeweiligen eine Datei Stacked.img anlegen soll.

Könnt ihr mir evtl. da weiterhelfen. Der Code von BASTLA hat leider nicht funktioniert

LG
Bitte warten ..
Mitglied: bastla
30.06.2014 um 21:55 Uhr
Hallo Tiff0588!

Versuch mal
01.
@echo off & setlocal 
02.
set "mypath=D:\test" 
03.
 
04.
for /d %%i in ("%mypath%\*") do ( 
05.
    pushd "%%i" 
06.
    for %%a in (*.tif) do gdal_merge -o Stacked.img -of HFA -separate "%%a" 
07.
    popd 
08.
)
Grüße
bastla
Bitte warten ..
Mitglied: Tiff0588
01.07.2014 um 14:02 Uhr
vielen Dank für die Antwort. Jetzt geht er in die einzelnen Ordner und führt die Funktion anscheinend für jedes Tiff aus. Aber es sollen die 5 Dateien

(z.B. TTC0123_0R
TTC0123_2R
TTC0123_3R
TTC0123_4R
TTC0123_5R)

als Input verwendet werden, also praktisch gdal_merge -o Stacked.img -of HFA -separate HIER die 5 Tiffs
Bitte warten ..
Mitglied: bastla
01.07.2014 um 14:29 Uhr
Hallo Tiff0588!

Na dann eben etwas in der Art (ungetestet):
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "mypath=D:\test" 
03.
 
04.
for /d %%i in ("%mypath%\*") do ( 
05.
    pushd "%%i" 
06.
    set "files=" 
07.
    for /f "delims=" %%a in ('dir /b/on *.tif') do set "files=!files! %%a" 
08.
    gdal_merge -o Stacked.img -of HFA -separate !files! 
09.
    popd 
10.
)
Grüße
bastla
Bitte warten ..
Mitglied: Tiff0588
01.07.2014 um 14:48 Uhr
He,
Danke, geht aber immer nur für den ersten Ordner mit den 5 Tiffs und bring für die anderen Ordner dann die Fehlermeldung
ERROR 4: !files! does not exist in the file system, and is not recognised as a supported dataset name.

LG
Bitte warten ..
Mitglied: bastla
01.07.2014, aktualisiert 02.07.2014
Hallo Tiff0588!

Versuch es zum Testen mit folgender Version:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "mypath=D:\test" 
03.
 
04.
for /d %%i in ("%mypath%\*") do ( 
05.
    pushd "%%i" 
06.
    set "files=" 
07.
    for /f "delims=" %%a in ('dir /b/on *.tif') do set "files=!files! %%a" 
08.
    echo Ordner:  %%i 
09.
    if defined files echo gdal_merge -o Stacked.img -of HFA -separate !files! 
10.
    popd 
11.
)
Du kannst so sehen, wie der Aufruf von "gdal_merge" erfolgen würde (nachdem das echo davor entfernt wurde) - die Verarbeitung wird so auch nur versucht, wenn tatsächlich .tif-Dateien gefunden wurden ...

Grüße
bastla
Bitte warten ..
Mitglied: Tiff0588
01.07.2014 um 15:20 Uhr
He,

hab den Test gemacht und er zeigt mir auch die richtige Funktion an, also
Ordner: D:\test\123
gdal_merge -o Stacked.img -of HFA -separate TTC0123_0R.tif TTC0123_2R.tif TTC0123_3R.tif TTC0123_4R.tif TTC0123_5R.tif

und das auch für die anderen Ordner, also findet er auch alle .tif, aber trotzdem bringt er den selben Fehler ERROR 4

LG
Bitte warten ..
Mitglied: bastla
02.07.2014 um 12:47 Uhr
Hallo Tiff0588!
trotzdem bringt er den selben Fehler ERROR 4
Sorry - woran es dann hakt, kann ich Dir auch nicht sagen ...

Grüße
bastla
Bitte warten ..
Mitglied: Tiff0588
02.07.2014 um 14:48 Uhr
Ok Danke,

mir kam gerade die Idee, dass ich über meine Ordner iteriere, die Tiffs rausgesucht und in eine Liste mit Pfad geschrieben werden.
Code sieht wie folgt aus:

@echo off & setlocal enabledelayedexpansion
set "mypath=D:\test"
for /d %%i in ("%mypath%\*") do (
pushd "%%i"
set "files="
for /f "delims=" %%a in ('dir /b/on *.tif') do set "files=!files! %%a"
echo Ordner: %%i
dir /b /s !files! > list.txt
popd
)

Das hat auch super funktioniert. Jetzt liegt in jedem Ordner eine List.txt mit den Pfaden und dem Namen der 5 Tiffs.
Jetzt wollte ich mit einer anderen batch -Datei wieder über die Ordner iterieren und jeweils die .txt als Input nehmen, was aber wieder nur beim ersten Ordner funktioniert hat. Fehlermeldung ERROR1: unable to open optfiles '!files!' No such file or directory

Code ist:

@echo off & setlocal enabledelayedexpansion
set "mypath=D:\test"
for /d %%i in ("%mypath%\*") do (
pushd "%%i"
set "files="
for /f "delims=" %%a in ('dir /b/on *.txt') do set "files=!files! %%a"
echo Ordner: %%i
if defined files gdal_merge -o Stacked.img -of HFA -separate --optfile !files!
popd
)

Vielleicht könnt ihr mir ihr noch weiterhelfen
Bitte warten ..
Mitglied: Tiff0588
05.07.2014 um 10:02 Uhr
So hab das Problem lösen können.

es musste noch start /B vor die Funktion gdal_merge gesetzt werden und nun funktioniert alles.

Vielen Dank noch mal für eure Hilfe, super Forum hier
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Per FTP-Shell oder Batch in ein unbekanten Ordner wechseln (8)

Frage von Ducky2 zum Thema Batch & Shell ...

C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen (22)

Frage von onlyforu8373 zum Thema C und C ...

Batch & Shell
Batch: .rar-Pakete automatisch Ordner erstellen und verschieben (2)

Frage von BowserMD zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
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 ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...