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?
Gast
#1467764
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 {} \;
Gast
#1467906
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 ...
Gast
#1467925
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.
Gast
#1467946
ä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
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)?
Gast
#1467953
geht das?
find . -name "*.csv" -exec echo {} \;
Gast
#1467957
@Klaus p: wird im mount als p/ angezeigt, darum die oben probierten Varianten @Peter nein, gleicher Fehler missing argument to '-exec'
Gast
#1467974
exec ist auch in \Bin nicht vorhanden... vielleicht klemmt es darum
Gast
#1467988
kann es sein das du das Windows find und nicht das Unix-Find für Windows nuztzt?
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.
Gast
#1468001
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.
Gast
#1468017
@Peter find -version gibt GNU find version 4.1 zurück Ist aus dem WINAVR-Paket. Gibt es bessere?
Gast
#1468072
@ Klaus
das wäre z.B.
find . -name "*.csv" -exec echo {} \;
gewesen?
hatten wir schon mit
missing argument to '-exec'
als Ergebnis
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.
Gast
#1468105
es geht mit
find . -name "*.csv" -exec"" echo {} \;""
ich probiere mal weiter...
nehme jederzeit gerne Tips an
ich traue mich ja kaum, eine bash als Interpreter vorzuschlagen statt des kranken DOS-cmd...
Gast
#1468156
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..
Gast
#1468227
es krankt offenbar an der Schreibweise Find übergibt \Dokumente und Einstellungen/Benutzer/Desktop und die WIN-Software erwartet \Dokumente und Einstellungen\Benutzer\Desktop
Gast
#1468253
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...
Gast
#1468273
so geht es bei mir
find -name "*.exe" -exec "c:\windows\system32\attrib.exe" "{}" ;
Gast
#1468299
Da kommt bei mir nur der übliche missig argument .. Meldung Was ist das für ein WinLinux / WinUnix das Du benutzt?
Gast
#1468310
müssten diese hier sein http://unxutils.sourceforge.net/
Gast
#1468315
dann probiere ich es doch mal damit
Gast
#1468371
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
Bitte melde dich an, um einen Beitrag zu schreiben.