PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateien anhand einer Textdatei auswählen


Gast
2008-09-02, 15:55:45
Ein Kumpel steht grad vor nem "kleinen" Problem. Und zwar hat er eine Textdatei mit 1000 Nummern und dazu 6000 Bilder. Nun möchte er diejenigen Bilder herausfiltern, deren Name sich aus einer der 1000 Nummern und ".jpg" zusammensetzt.

Gibts da vielleicht schon fertige Programme oder wie könnte man das angehen? Meine C-Kenntnisse sind leider schon etwas eingerostet.

Monger
2008-09-02, 17:35:17
Naja, mit einer ordentlichen Programmiersprache sind das nur ein paar Handgriffe! ;)

- Textdatei auslesen
- Namen in eine gut durchsuchbare Struktur eintüten
- Unterverzeichnis mit allen Dateien auslesen
- Jeden Dateinamen um das .jpg kürzen, und danach in obiger Struktur suchen
- Wenn gefunden, in eine Liste eintragen und damit sonstwas tun

In VB.NET sähe das ungefähr so aus:



dim numberList as new List(of String)
numberList.AddRange(File.ReadAllLines("C:\meineZahlenliste.txt")

dim finalList as new List(of String)

for each file as IO.Directory in IO.Directory.GetFiles("C:\meine Bilder")
if numberList.Contains(file.Remove(file.LastIndexOf(".")) then
finalList.add(file)
end if
next


Ist aber halt logischerweise arg von der verwendeten Programmiersprache abhängig! ;)

Gast
2008-09-05, 11:25:09
Auf einer Bash sollte ein beherztes


#!/bin/bash
mkdir filter
for f in $(cat $1); do
mv ${f}.jpg filter/;
done


helfen, kein Grund eine 'richtige' Programmiersprache an zuwerfen. Die Bilder zu denen die Nummern aus der Textdatei gehören sollten sich denn in dem Ordner filter befinden.

Ectoplasma
2008-09-05, 14:38:00
Auf einer Bash sollte ein beherztes


#!/bin/bash
mkdir filter
for f in $(cat $1); do
mv ${f}.jpg filter/;
done


helfen, kein Grund eine 'richtige' Programmiersprache an zuwerfen. Die Bilder zu denen die Nummern aus der Textdatei gehören sollten sich denn in dem Ordner filter befinden.

Ich wette der Thread-Ersteller redet von einem Windows PC. Naja, da kann man dann auch vielleicht eine Bash haben.

Baalzamon
2008-09-05, 14:50:18
Ich wette der Thread-Ersteller redet von einem Windows PC. Naja, da kann man dann auch vielleicht eine Bash haben.
Kann man: Cygwin oder Msys.

Gast
2008-09-05, 21:11:02
Klar man investiert einmal 2 Stunden darin cygwin zum Laufen zu bringen, dann noch einmal 2 Stunden darin, dass man die Dateien dort umändern kann und wieder zurück schreiben oder man bastelt sich schnell einmal eine kleine .exe im Visual Studio. Da gibt es die Express Editions sowieso gratis.

Wer sagt uns eigentlich, dass die Nummern durch Zeilenumbrüche getrennt sind Oder dass wir die Dateien kopieren wollen und nicht ausgeben.
Oder noch besser wer sagt uns, auf welcher Plattform das Ganze laufen muss. Vielleicht ist es ja ein Linux, vielleicht auch nur ein PC, aber vielleicht ist es auch eine Schnittstelle für mehrere Kunden, wo man nicht einfach irgendwas installieren kann. .NET Framework 2.0 kann man denke ich einmal voraussetzen, aber ansonsten sollte man alles so schlank wie möglich machen und vor allem in der Bedienung so einfach wie möglich.
Vielleicht soll das Ganze auch als Dienst auf einem Server laufen. Da ist cygwin auch nicht unbedingt ideal.

Gast
2008-09-05, 21:26:41
Ich wette der Thread-Ersteller redet von einem Windows PC. Naja, da kann man dann auch vielleicht eine Bash haben.

Mag ja sein, das er eine Win-Kiste hat, bin aber mal davon ausgegangen, wer einen C-Compiler bei der Hand hat, bei dem sind andere häufige Werkzeuge auch nicht weit. Ansonsten kann man sie ja immer noch installieren oder eine beliebige Live-CD (mit Bash) einschmeißen.

Ich hab wohl vorhin vergessen zu erwähnen, das das Bash-Skript mit

sh Skriptname datei_mit_Zahlen_drin.txt

aufgerufen wird, falls das nicht ohnehin klar war.

Ectoplasma
2008-09-06, 00:23:13
Kann man: Cygwin oder Msys.

-- zweimal geposted -- sorry --

Ectoplasma
2008-09-06, 00:27:39
Kann man: Cygwin oder Msys.

Und? Ich habe MSys. Normalerweise hat man das aber nicht auf einem Windows PC. Nur das wollte ich sagen.
Hmm, ich wette auch, dass man das auch mit einem NT Skripte machen kann. Ich kenne mich da leider aber nicht so aus, als das ich selbst ein Beispiel aus dem Hut zaubern könnte.

Baalzamon
2008-09-06, 13:07:49
Und? Ich habe MSys. Normalerweise hat man das aber nicht auf einem Windows PC. Nur das wollte ich sagen.
Hmm, ich wette auch, dass man das auch mit einem NT Skripte machen kann. Ich kenne mich da leider aber nicht so aus, als das ich selbst ein Beispiel aus dem Hut zaubern könnte.
Ich wollte damit nur sagen, das man kein Linu/Unix braucht um die Shell nutzen zu können. War vielleicht etwas kurz angebunden und kam falsch rüber. :tongue:

Und mir scheint der Bash-Ansatz auch der beste zu sein, sofern man nicht genau weiss, was der TE genau damit machen will. Für mich hört sich das so an, als wolle er nur mal schnell seine private Fotosammlung neusortieren.

Ehrlichgesagt finde ich da eine C/C++/C#/Java whatever Lösung einfach den totalen Overkill. Da ist man ja länger damit beschäftigt die richtigen Funktionsaufrufe zum auslesen einer Textdatei zu suchen, als Msys zu installieren und ein Bash-Skript zu schreiben (Hallo @Herr Gast ;) ).

So jetzt dürft ihr mich gerne steinigen, ist mir egal.

Gast
2008-09-07, 18:02:36
irgendwie würde man jetz erwarten dass jemand eine lösung als windows bat präsentiert.

dennoch gibt es eine noch viel weit einfachere lösung für dieses prob :D
offenbar denken hier viele einfach zu kompliziert.

RattuS
2008-09-07, 22:49:52
Wie siehts mit VBScript aus? Damit müsste das problemlos gehen.