| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: String auswerten (1489 mal gelesen)
|
K_H_A_N Ehrenmitglied Dipl.-Ing. (freiberuflich)
    
 Beiträge: 1555 Registriert: 21.07.2004 Creo Parametric & Simulate 3.0 M140 ab 4.0 gemietet CATIA V5 Siemens NX i9-13900K @5.9 GHz 4x16GB @7.2 GHz nVidia RTXA4000 WINDOWS 10 Pro 64
|
erstellt am: 02. Apr. 2007 17:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich weiß zwar nicht, ob es hier richtig ist, aber ich habe kein passenderes Forum gefunden. Folgende Aufgabenstellung ist (automatisiert) zu lösen: Ich habe eine Textdatei, in der an bekannter Stelle (Zeile 7, 3. Wort) ein Wort auszutauschen ist. Dieses Wort wird gefunden durch die Auswertung einer OS-Variable, deren Wert zunächst mit SET Variable >tmp.txt ausgewertet wird. In tmp.txt steht dann Variable=Wert. Dieser Wert soll in die andere Textdatei nach Zeile 7 Wort 3. Wie geht so etwas? Ich bin für jede Anregung dankbar. MfG ------------------ BTW : your computer has no brain, use your own  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 02. Apr. 2007 18:15 <-- editieren / zitieren --> Unities abgeben:          Nur für K_H_A_N
|
K_H_A_N Ehrenmitglied Dipl.-Ing. (freiberuflich)
    
 Beiträge: 1555 Registriert: 21.07.2004
|
erstellt am: 02. Apr. 2007 18:53 <-- editieren / zitieren --> Unities abgeben:         
|
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 02. Apr. 2007 19:02 <-- editieren / zitieren --> Unities abgeben:          Nur für K_H_A_N
OK - dann wird es schon ein bisschen leichter... Ist das Wort einmalig (also kommt es in der TXT-Datei nur einmal vor) ? Oder gibt es dieses Wort häufiger ? Eventuell kannst du deine Aufgabenstellung etwas präzisieren - da normal Variablen, welche im OS definiert sind auch direkt verarbeitet werden können... Desweiteren: Wie häufig muss man diese TXT-Datei(en) ändern ? Einmal ? Täglich ? (Tools wie Notepad++ kann zB viele Dateien öffnen und in allen dann was suchen und ersetzen...) ------------------ Grüsse Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K_H_A_N Ehrenmitglied Dipl.-Ing. (freiberuflich)
    
 Beiträge: 1555 Registriert: 21.07.2004
|
erstellt am: 02. Apr. 2007 19:32 <-- editieren / zitieren --> Unities abgeben:         
die ursprüngliche Textstelle kann ich frei definieren. Sie entstammt einem Trailfile (Pro/E) und entsteht bei der Eingabe. Start Pro/E-Chinesisch Der Trailfile ist in Pro/E ausführbar, d.h., alles, was da drin aufgezeichnet wurde, läuft nach Aufruf des Trails auch wieder ab. Im Grunde geht es mir um die Übergabe einer OS-Variable an Pro/E als Parameter. Ich will den Parameter über den Trail mit dem geänderten Wert erzeugen. Leider kann Pro/E das nicht selbst. Über einen Batch-Script oder eine andere aus einem DOS-Fenster ausführbare Datei will ich den Trail (Vorlage) kopieren, die Textstelle mit dem Wert der Variablen überschreiben und dann den Trail im Pro/E ablaufen lassen. Das Ganze dann auch noch als Mapkey (Pro/E-Makro). Ende Pro/E-Chinesisch Ich hoffe, jetzt ist es transparenter. MfG ------------------ BTW : your computer has no brain, use your own  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 02. Apr. 2007 20:14 <-- editieren / zitieren --> Unities abgeben:          Nur für K_H_A_N
Generell gibt es Tools wie AEdit (von PC Magazine) die das im Batch-Modus können... Sonst: Du kannst dir auch deine einzelnen Textbausteine in Files kopieren (bzw. anlegen) und dann mittels copy-Befehl im DOS zusammenkopieren... (das ist aber nur 'ne blöde alte Methode...) ------------------ Grüsse Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermes Mitglied
 
 Beiträge: 311 Registriert: 08.09.2002
|
erstellt am: 03. Apr. 2007 10:45 <-- editieren / zitieren --> Unities abgeben:          Nur für K_H_A_N
wenn der Original-String eindeutig ist (z.B. file1.txt : #STRING1# ) dann ist es einfach sed s/#STRING1#/Fritz/ file1.txt > file2.txt Windows XP enthält eine einfache Version des Programmes "sed" (String Edit) Es gibt auch GNU Software Version von "sed" wie sie in den Unix Welt üblich ist; Diese Tools unterstützen regular Expression für die Selektion der Textstrings ------------------ mit freundlichen Grüssen Toni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fritsrol Mitglied CAD-Systemingenieur
 
 Beiträge: 143 Registriert: 11.12.2002 Windows 10 64 Office 2016 Eplan P8 2.7 HF2 VS 2015 Medusa 2000i2
|
erstellt am: 03. Apr. 2007 11:38 <-- editieren / zitieren --> Unities abgeben:          Nur für K_H_A_N
Hallo, folgendes Batchprogramm liest alle Zeilen einer Datei, ersetzt eine festgelegte Phrase (123) mit einem neuen wert (wxyz) und schreibt das in eine Neue Datei. Der "For /F" Befehl kennt auch noch ein paar Optionen um Zeilen aufzuschlüsseln (token, delim ...) -> Windows Hilfe ----------------------------------------------------- @echo off c: cd c:\temp echo. > test2.txt for /F "tokens=*" %%a in (test.txt) do @call :dodir %%a type test2.txt goto :eof REM Sub-Programm zum abarbeiten der gefundenen Zeilen :dodir echo. echo ************************************ echo **** found %1 **** set orgstr=%1 REM *** Ersetzt in der aktuellen Zeile 123 mit wxyz set tmpstr=%orgstr:123=wxyz% echo %tmpstr% >> test2.txt goto :eof ---------------------------------------------------- @Hermes : Wo hast Du unter Windows das sed Programm gefunden ? Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermes Mitglied
 
 Beiträge: 311 Registriert: 08.09.2002
|
erstellt am: 03. Apr. 2007 12:29 <-- editieren / zitieren --> Unities abgeben:          Nur für K_H_A_N
der Pfad zum Programm lautet C:\WINDOWS\system32\SED.EXE kann somit ab Command-shell bzw. in BAT-Scripts aufgerufen werden; SED /? bingt eine eher bescheidene Beschreibung; Mit Google findet man div. Doku's und div. GNU Software Versionen ------------------ mit freundlichen Grüssen Toni
[Diese Nachricht wurde von Hermes am 03. Apr. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K_H_A_N Ehrenmitglied Dipl.-Ing. (freiberuflich)
    
 Beiträge: 1555 Registriert: 21.07.2004 Creo Parametric & Simulate 3.0 M140 ab 4.0 gemietet CATIA V5 Siemens NX i9-13900K @5.9 GHz 4x16GB @7.2 GHz nVidia RTXA4000 WINDOWS 10 Pro 64
|
erstellt am: 04. Apr. 2007 16:38 <-- editieren / zitieren --> Unities abgeben:         
Erstmal vielen Dank für die Lösungswege, zunächstmal der output von dem Script: !trail !Pro/ENGINEER 123=wxyz 123=wxyz 123=wxyz 123=wxyz 123=wxyz 123=wxyz ~ !Command ! ! ~ ~ ~ ~parameter !End Das war so nicht gemeint. Ich will nur die eine Zeile ändern, von parameter 123 nach parameter wxyz, um beim Beispiel zu bleiben. Der Ansatz mit dem Zusammenkopieren ist für mich einfacher. In Kombination mit sed ist die Lösung gefunden: "c:\Program Files (x86)\GnuWin32\bin\sed" -e s/USERNAME=// C:\usr\local\default\temp.txt >C:\usr\local\default\trail2.txt heißt die entsprechende command line im Beispiel, um die Auswertung des Parameters auf seinen Wert zu kürzen. Danke und U's ------------------ BTW : your computer has no brain, use your own  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K_H_A_N Ehrenmitglied Dipl.-Ing. (freiberuflich)
    
 Beiträge: 1555 Registriert: 21.07.2004
|
erstellt am: 06. Apr. 2007 11:51 <-- editieren / zitieren --> Unities abgeben:         
kleine Ergänzung: ich habe noch den Tipp bekommen, dass for /f "tokens=2 delims==" %%a in (%verzeichnis%\temp.txt) do echo %%a > %verzeichnis%\trail2.txt das Gleiche Ergebnis ergibt. In diesem Fall sorgt delims== mit dem 2. = dafür, dass die Zeile bis zum = ignoriert wird und alles dahinter ausgegeben wird. Und Bordmittel gehen vor Freeware. Anderer Seits kann man mit sed jeden beliebigen bekannten Teil eines Strings entfernen. Hat auch seinen Charme, wo es gebraucht wird. MfG ------------------ BTW : your computer has no brain, use your own  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |