mikrocontroller.net

Forum: PC-Programmierung DOS mehrer Dateien finden und gemeinsam ablegen


Autor: Tex Avery (tex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem.
in einem Unterverzeichnis gibt eine nicht bekannte Anzahl 
Unter-Unterverzeichnissen, die ständig größer oder kleiner werden kann.
In jedem dieser Unter-Unterverzeichnisse kann sich (neben ganz vielen 
anderen Dateien) eine Datei, die Messdaten beinhaltet, befinden. Diese 
heißt in allen Unterverzeichnissen gleich.

Einem Programm, dass diese Daten lesen und verarbeiten kann, müssen nun 
diese Dateien via Kommandozeile zugeführt werden.
Da immer mehrere Dateien vorhanden sein können, können die Dateien nicht 
zusammen in eine Verzeichnis kopiert werden, aus dem sie verarbeitet 
werden, es sei denn, man würde sie umbenennen. Ein alles erschlagender 
Copy- Befehl kann aber bei der Umbenennung die Dateien z.B. nicht 
durchnummerieren, oder doch?! und ich weiß nur nicht wie?
Eine Batch-Datei kann die einzelnen Messgerätedateien nur einzeln dem 
Konverter zuführen.
Der Weg, die Verzeichnisse alle zu Fuß abzuklappern, ist nur von 
geringem wert, da eben immer wieder neue Verzeichnisse dazu entstehen 
können.
Ich weiss dass es mit LINUX einfacher ginge aber es muss nun mal mit DOS 
/ Windoofs laufen, und mit einer Batch-Datei.
Hat jemand eine Idee?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was versteht du unter Dos? Eine Dos-Box im Windows oder ein richtiges 
Dos?

die Liste der Dateien bekommt man mit dir /s /b "dateiname.xxx" dies 
kann man in eine Datei umleiten und dann diese Datei mit einer for 
schleife abarbeiten (eventuell auch ohne die zwischen Datei). Es gibt 
auch das unix find für Windows da kann man einfach schreiben

find . -name dateiname.xxx --exec programm {} \;

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach ja,
Super Idee eigentlich.
Ich versuche es gerade hinzukriegen, scheitere aber an meinen 
rudimentären LINUX-Kenntnissen

Der Konverter liegt auf einem anderen Laufwerk, unter Windows bei
p:\konverter.exe aber find bzw. jetzt natürlich -exec kennt 
p:\konverter.exe natürlich nicht. Wie muss das in diesem Fall richtig 
heißen?

Quelle ist die gefundene Datei, also {}
Ziel ist c:\Dokumente und 
Einstellungen\Benutzer\Desktop\ziel(+datum_und_Sekunde_der_Umsetzung).cs 
v

Wie setzt man das zusammen?
{\/Dokumente und Einstellungen/Benutzer/Desktop/ziel%A DX.csv} wird ja 
wohl ehr nicht funktionieren ...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vermutlich ein leerzeichen Problem da muss man noch mit " arbeiten.


find "c:\Dokumente und Einstellungen\Benutzer\Desktop\" -name "*.csv" 
--exec p:\konverter.exe \"{}\" \;

so in der Art.

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ähm, nein.
Das "find" klappt super.
Das -exec streikt.
missing argument to "-exec"
ist alles was kommt, egal ob ich
/p/konverter.exe
"p:\koverter.exe"
"/p/konverter.exe"
oder mit ""
oder oder oder eintippe

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
werden die Laufwerke wie P: bei dir unter einem andere Namen 
eingeblendet?
Dann natürlich den nehmen.
Vielleicht zeigt das der Befehl mount (ohne weitere Parameter)?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht das?

find . -name "*.csv" -exec echo {} \;

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus
p: wird im mount als p/ angezeigt, darum die oben probierten Varianten

@Peter
nein, gleicher Fehler
missing argument to '-exec'

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
exec ist auch in  \Bin nicht vorhanden...
vielleicht klemmt es darum

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann es sein das du das Windows find und nicht das Unix-Find für Windows 
nuztzt?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tex schrieb:
> exec ist auch in  \Bin nicht vorhanden...
> vielleicht klemmt es darum

-exec ist nicht der Aufruf eines Programmes namens exec, sondern ein
Parameter an find (der die Ausführung des folgenden Kommandos bewirkt,
das wiederum muß vorhanden sein).

Ich würde mal ein Programm testweise aufrufen, das im Standardsuchpfad
gefunden wird (bzw. deinen Konverter dazu bringen, daß er über
PATH erreichbar ist) und dann ohne Pfad aufrufen.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss es wirklich eine Batch sein? Falls es nur darum geht das Ganze 
unter Windows laufen zu lassen wäre evtl. VBS auch eine Option.

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
find -version
gibt
GNU find version 4.1 zurück
Ist aus dem WINAVR-Paket.
Gibt es bessere?

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Klaus

das wäre z.B.
find . -name "*.csv" -exec echo {} \;
gewesen?

hatten wir schon mit
missing argument to '-exec'
als Ergebnis

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nebenbei: ich schreibe die "{}" und das ";" unter Linux auch immer
in Gänsefüßchen. Vielleicht brauchst du das hier ja auch so, weiß
ich aber nicht.

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es geht mit

find . -name "*.csv" -exec"" echo {} \;""

ich probiere mal weiter...
nehme jederzeit gerne Tips an

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich traue mich ja kaum, eine bash als Interpreter vorzuschlagen
statt des kranken DOS-cmd...

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorschlagen kannst Du es, aber ich kann wohl nicht damit umgehen.
Wenn Du Dich CVFR aus FL95 zum Approach auf EDDI 25 links anmeldest... 
das würde ich verstehen..

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es krankt offenbar an der Schreibweise

Find übergibt \Dokumente und Einstellungen/Benutzer/Desktop
und die WIN-Software erwartet \Dokumente und 
Einstellungen\Benutzer\Desktop

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank an alle die geholfen haben.

Das Problem ist offenbar da zu suchen dass Find das Ergebnis der Suche 
in den {} an Linux-Pomponenten wie z.B. cp weitergibt, jedoch nicht an 
andere Programme. Darum liefert

find . -name "*.csv" -exec"" echo {} \;""
so viele Leerzeilen, wie Einträge gefunden wurden aber keine lesbar 
Ausgabe.

Wenn noch jemand eine praktikable Idee hat...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so geht es bei mir

find -name "*.exe" -exec "c:\windows\system32\attrib.exe" "{}" ;

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da kommt bei mir nur der übliche missig argument .. Meldung

Was ist das für ein WinLinux / WinUnix das Du benutzt?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
müssten diese hier sein
http://unxutils.sourceforge.net/

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann probiere ich es doch mal damit

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit meinem Tool funktioniert das noch immer nicht, aber ich kann jetzt 
das Tool über eine Batch-Datei aufrufen und ich denke das bekomme ich 
irgend wie hin.
Vielen Dank für die Hilfe
tex

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.