Top-Themen

Aktuelle Themen (A bis Z)

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 Mit batch-script wert in b.txt durch wert aus a.txt ersetzen

Mitglied: Lowered

Lowered (Level 1) - Jetzt verbinden

09.08.2010 um 19:16 Uhr, 5691 Aufrufe, 13 Kommentare

Ersetzen eines Parameters an einer bestimmten Stelle in einer txt-Datei durch einen Parameter aus einer anderen txt-Datei

Hallo die Damen und Herren,
ich beschäftige mich betriebsbedingt mit Batch-Script. Genutzt wird es für eine Programmkopplung, also Programme ausführen und Werte aus Dateien hin und her kopieren. Genau da liegt auch das Problem.

Also, Werte aus Dateien auslesen schaffe ich mittlerweile schon.
Ich sitze seit 3 Tagen daran, in einer Datei Lag1.ein 5 Parameter zu ändern. Wenn ich einen schaffe, geht der rest ja von alleine.

Strategie:
die Zeile mit dem Parameter den ich ändern möchte aus Lag1.ein mit find auslesen>> var1=FRX = 134.45
Den neuen Wert lese ich aus der Datei Lagerkraft.txt aus>> kra1=FRX = 3455.34

Ich habe eine Funktion gefunden, die nun die Datei Lag1.ein zeilenweise ausliest und mit var1 vergleicht. wenn die Zeile ungleich var1 ist wird sie in eine datei Lag11.ein kopiert
Ist die Zeile = var1, wird var1 durch kra1 ersetzt und in Lag11.ein kopiert ...

Offensichtlich gibt es da aber probleme mit den Leerzeichen innerhalb der Variablen, das Ergebnis des Ersetzens ist:
= 134.45 FRX = 3455.34 = 134.45 (hab die Zeichenfolge nicht ganz genau im Kopf)

Meinen Code kann ich erst morgen Nachmittag posten, der liegt leider noch auf Arbeit.

Aber vielleicht hat jemand eine Idee was mein Problem ist. Ich gehe davon aus das mir lediglich Klammern, Anführungszeichen oder ähnliches fehlen um den ganzen 'String' zu vergleichen bzw zu ersetzen.


Für Hilfe bin ich sehr dankbar, damit ich mit meiner Bachelorarbeit endlich mal wieder vorrankomme.


Grüße

H. Esche
Mitglied: bastla
09.08.2010 um 19:27 Uhr
Hallo Lowered und willkommen im Forum!

Ließe sich die Beschreibung auch so darstellen?
Lagerkraft.txt:
01.
Zeile L1 
02.
FRX = 3455.34 
03.
... 
04.
Zeile Lx
lag1.ein Ist:
01.
Zeile 1 
02.
FRX = 134.45 
03.
... 
04.
Zeile x
lag1.ein Soll:
01.
Zeile 1 
02.
FRX = 3455.34 
03.
... 
04.
Zeile x
Grüße
bastla
Bitte warten ..
Mitglied: Lowered
09.08.2010 um 20:09 Uhr
bei der Datei Lagerkraft ist alles möglich, diese erstelle ich selbst aus Ansys. Allerdings wäre mir die Matrixschreibweise "lieber" um die Werte zuordnen zu können. Ich habe im Ansys ein Getriebe, dort werte ich an jedem Lager Kräfte und Biegung aus. Wie ich die ausgebe, bleibt mir überlassen.
Lagerkraft.txt
Zeile L1
FRX = 3455.34
FRY = ...
...

Zeile L2
FRX = ....
....

Zeile L3
da ist "alles" möglich, solange es irgendwie übersichtlich bleibt.

bei der lag1.ein ist das nicht möglich. Das ist eine Eingabedatei für ein Fortran Programm, da gibt es eine bestimmte Struktur:
Lag1.ein
$Lagerdaten
...
$Darstellung
...
$Lagerkraefte
FRX = 134.45
FRY = ...
...
$Ende

Wie gesagt ich habe die Werte die ich will schon als Parameter, nur beim ersetzen läuft da etwas durcheinander. Ich Poste morgen die Dateien, sowie das Batch-Script.
Sofern es schnellere, bessere Lösungen gibt, bin ich natürlich offen.

Danke @ bastla
Bitte warten ..
Mitglied: bastla
09.08.2010 um 20:26 Uhr
Hallo Lowered!

Nach Deiner Darstellung könnte es in "Lagerkraft.txt" mehrere Zeilen mit "FRX =" geben - welche wäre dann zu verwenden?

Ansonsten warte ich mal auf morgen ...

Grüße
bastla
Bitte warten ..
Mitglied: Lowered
10.08.2010 um 15:42 Uhr
So, los geht es.

derzeit sieht die datei LAgerkraft wie folgt aus:

01.
L1;103926.46;      0.00;      0.00; 
02.
L2;101059.69;     15.31;  27690.71; 
03.
L3;124402.50;     -3.28; -27924.22; 
04.
L4; 93513.70;     -0.04;      0.00; 
05.
> 
Das ist beliebig änderbar. Der Inhalt ist (jetzt) eine Tabelle die für jede Lagerstelle die Kraft FRX, FRY und FRZ enthält. Wenn das hilft, könnte man jeder Variable noch eine Nummer anfügen für die Lagerstelle, sprich FRX1 ...

Die Datei Lag1.ein sieht immer folgendermaßen aus:
01.
$ Lagerbelastung 
02.
 
03.
DREHZAHL = 1800 
04.
FRX = 1234 
05.
FRY = 69529 
06.
FAZ = 0 
07.
WBETA =  0.0 
08.
WGAMMA = 0.0 
09.
 
10.
$ Ende 
11.
> 
halt mit unterschiedlichen Zahlenwerten, aber die Variablen heißen gleich. Lag[Nr].ein gibt es für jede Lagerstelle, wird später noch umbenannt und in ein anderes Verzeichnis kopiert, aber das ist ja nicht schwer.

Jetzt habe ich mir folgendes zusammengefummel:

01.
@ECHO off 
02.
SETLOCAL enabledelayedexpansion 
03.
 
04.
REM Suchen der Lagerkraft aus datei 
05.
 
06.
find "L1" Lagerkraft.txt > temp1.txt 
07.
for /f "tokens=2 delims=;" %%A in (temp1.txt) do set kra1=FRX = %%A 
08.
 
09.
REM Suchen und Ersetzen in einer Textdatei 
10.
 
11.
FOR /F "tokens=*" %%B in ('find "FRX" Lag1.ein') DO SET var1=%%B 
12.
 
13.
SET "quell_datei=Lag1.ein" 
14.
SET "ziel_datei=Lag11.ein" 
15.
 
16.
REM Ausgabe einer Fehlermeldung und Programmabbruch 
17.
REM falls die Variable "suchen_nach" nicht definiert ist 
18.
IF NOT DEFINED var1 (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof) 
19.
 
20.
REM Loeschen der Ausgabedatei, falls sie (noch) existiert 
21.
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL) 
22.
 
23.
REM Quell-Datei zeilenweise auslesen  
24.
REM und in Variable "zeile" schreiben 
25.
FOR /f "delims=*" %%i IN ('FINDSTR . "%quell_datei%"') DO ( 
26.
SET zeile=%%i& CALL :ersetzen !zeile! 
27.
28.
GOTO :weiter 
29.
:ersetzen 
30.
REM innerhalb der Variable "zeile" 
31.
REM den Inhalt der Variable "suchen_nach" suchen 
32.
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen 
33.
SET zeile=!zeile:%var1%=%kra1%! 
34.
 
35.
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben 
36.
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%) 
37.
GOTO :eof 
38.
 
39.
:weiter 
40.
REM weitere Verarbeitung 
41.
> 

Das ganze findet erstmal in einem Ordner statt. Ich lese den Wert für FRX aus der Datei Lagerkraft aus und lege ihn in %kra1 ab.
Ich suche in Lag1.ein die Zeile in der FRX = ... steht und speichere den Inhalt der Zeile in %var1

Quelldatei ist Lag1.ein
Zieldatei ist Lag11.ein

Dann wird alles bis FRX sauber von Quell- in Zieldatei kopiert. In der Zeile von FRX steht dann:
-23077=FRX = 103926.46= -23077
Danach wird wieder suaber kopiert.

Mein Verdacht: der Vergleich der beiden Strings funktioniert wegen der enthaltenen Leerzeichen nicht.

Anschließend muss ich noch die anderen (bisher) 2 Parameter ändern. Das werde ich vermutlich alles auf einmal machen.

Für einen Augenblick habe ich schon drüber nachgedacht Lag1.ein bis FRX zu kopieren und danach die die Werte hart in die Datei reinzuschreiben. Allerdings würde ich mir die Kontrollmöglichkeit durch das auslesen und vergleichen gern offen halten.

Oder gibt es noch bessere Verfahren / Möglichkeiten mittels Batch?
Habe mir angelesen das das Umkopieren dringend zu empfehlen ist, da es sonst zu Datenverlust kommen könnte.

Dann bin ich jetzt mal gespannt wie sich das ganze entwickelt.
Bitte warten ..
Mitglied: bastla
10.08.2010 um 18:08 Uhr
Hallo Lowered!

Ich würde es geringfügig anders anlegen (und dabei gleich für "Lag2.ein", "Lag3.ein", etc - können dann über eine weitere Schleife verarbeitet werden - vorsorgen):
01.
@echo off & setlocal 
02.
set "quell_datei=Lag1.ein" 
03.
set "lager=Lagerkraft.txt" 
04.
 
05.
REM Dateinamen (mit Pfad, aber ohne Typ) ermitteln 
06.
for %%i in ("%quell_datei%") do set "quell_datei_n=%%~dpni" 
07.
REM Dateinummer (=letzte Stelle des Namens) ermitteln 
08.
set "quell_datei_nr=%quell_datei_n:~-1%" 
09.
REM Zieldateinamen erzeugen 
10.
set "ziel_datei=%quell_datei_n%1.ein" 
11.
 
12.
REM FR* entsprechend der Dateinummer auslesen (dabei Leerzeichen entfernen) und den Variablen %X%, %Y% und %Z% zuweisen 
13.
for /f "tokens=2-4 delims=; " %%a in ('findstr /b "L%quell_datei_nr%;" "%lager%"') do set "X=FRX = %%a" & set "Y=FRY = %%b" & set "Z=FRZ = %%c" 
14.
 
15.
REM Loeschen der Ausgabedatei 
16.
del /f "%ziel_datei%" 2>nul 
17.
 
18.
REM Quell-Datei zeilenweise auslesen, in Variable %zeile% schreiben und Verarbeitungs-Unterprogramm aufrufen 
19.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%quell_datei%"') do set "zeile=%%j" & call :ProcessLine 
20.
GOTO :weiter 
21.
 
22.
:ProcessLine 
23.
REM Auf FR*-Zeile prüfen und ggf ersetzen 
24.
if defined zeile for %%a in (X Y Z) do echo %zeile%|findstr /b /c:"FR%%a =">nul && (echo %%a & call set "zeile=%%%%a%%") 
25.
REM Zeile in Zieldatei schreiben 
26.
>>"%ziel_datei%" echo\%zeile% 
27.
GOTO :eof 
28.
 
29.
:weiter 
30.
REM weitere Verarbeitung
Ev ist
call set "zeile=%%%%a%%"
etwas erklärungsbedürftig: Damit wird der Variablen %zeile% je nach Inhalt von %%a der Variableninhalt von %X% oder %Y% oder %Z% zugewiesen - zur Veranschaulichung durch "_" getrennt geschrieben sähe der letzte Teil so aus: %%_%%a_%%, woraus wegen des "call" dann eben (jetzt wieder ohne Trennzeichen) zB %X% wird ...

Grüße
bastla
Bitte warten ..
Mitglied: Lowered
11.08.2010 um 16:39 Uhr
Erfolgsmeldung!

Das Script funktioniert super. Habe noch ein paar kleine Änderungen vorgenommen um weitere Variablen einzulesen.

Recht herzlichen Dank für die Mühe @bastla
Bitte warten ..
Mitglied: bastla
11.08.2010 um 18:23 Uhr
Hallo Lowered!

Freut mich, wenn's passt ...

Grüße
bastla

P.S.: "Mühe" war dabei nicht im Spiel ...
Bitte warten ..
Mitglied: Lowered
12.08.2010 um 15:02 Uhr
Hallo, ich nochmal.

habe Heute nochmal ein wenig daran rumgebastelt um das Ganze besser portierbar zu machen. Also habe ich versucht die absoluten Pfadangaben in Variablen zu packen, mit dem Ergebnis, das jetzt an den Stellen FRX, FRY und FAZ nichts mehr geschrieben wird.


01.
 
02.
@echo off & setlocal 
03.
 
04.
REM Dateipfade müssen angepasst werden!!! 
05.
REM Pfad für Dateien 
06.
set "dat=H:\Lagerkram\Testlauf2\Dateien\" 
07.
 
08.
REM Pfad zu LAGER2HP 
09.
set "lag=H:\Lagerkram\Testlauf2\Lager2\" 
10.
 
11.
REM Pfad zu ANSYS 
12.
set "ans=" 
13.
 
14.
 
15.
set /p "anzahl="<"%dat%Lagerzahl.txt" 
16.
set "nr=1" 
17.
 
18.
cd /D %dat% 
19.
 
20.
set "lager=%dat%Lagerkraft.txt" 
21.
REM Zieldateinamen erzeugen 
22.
set "ziel_datei=%lag%work\Lager2.ein" 
23.
 
24.
:anfang 
25.
 
26.
cd /D %dat% 
27.
 
28.
set "quell_datei=%dat%Lag%nr%.ein" 
29.
 
30.
REM Dateinamen (mit Pfad, aber ohne Typ) ermitteln 
31.
for %%i in ("%quell_datei%") do set "quell_datei_n=%%~dpni" 
32.
REM Dateinummer (=letzte Stelle des Namens) ermitteln 
33.
set "quell_datei_nr=%quell_datei_n:~-1%" 
34.
 
35.
REM FR* entsprechend der Dateinummer auslesen (dabei Leerzeichen entfernen) und den Variablen %X%, %Y% und %Z% zuweisen 
36.
for /f "tokens=2-4 delims=;" %%a in ('findstr /b "%quell_datei_nr%;" "%lager%"') do set "X=FRX = %%a" & echo %X% & set "Y=FRY = %%b" & set "Z=FAZ = %%c" 
37.
 
38.
 
39.
REM Loeschen der Ausgabedatei 
40.
del /f "%ziel_datei%" 2>nul 
41.
 
42.
REM Quell-Datei zeilenweise auslesen, in Variable %zeile% schreiben und Verarbeitungs-Unterprogramm aufrufen 
43.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%quell_datei%"') do set "zeile=%%j" & call :ProcessLine 
44.
GOTO :weiter 
45.
 
46.
:ProcessLine 
47.
REM Auf FR*-Zeile prüfen und ggf ersetzen 
48.
if defined zeile for %%a in (X Y) do echo %zeile%|findstr /b /c:"FR%%a =">nul && (echo %%a & call set "zeile=%%%%a%%") 
49.
if defined zeile for %%a in (Z) do echo %zeile%|findstr /b /c:"FA%%a =">nul && (echo %%a & call set "zeile=%%%%a%%") 
50.
REM Zeile in Zieldatei schreiben 
51.
>>"%ziel_datei%" echo\%zeile% 
52.
GOTO :eof 
53.
 
54.
:weiter 
55.
REM weitere Verarbeitung 
56.
 
57.
cd /D %lag%BIN 
58.
start %lag%BIN\LAGER2HP.exe 
59.
echo warten auf LAGER2HP Ergebnis 
60.
ping 127.0.0.1 -n 5 > nul 
61.
 
62.
 
63.
REM Ergebnisse auslesen und in Datei schreiben 
64.
 
65.
if %nr% EQU 1 type nul > %dat%Versch.txt 
66.
 
67.
 
68.
find "RAD. VERLAGERUNG IN X-RICHTUNG" %lag%work\LAGER2.AUS > temp.txt 
69.
for /F "delims=GM  skip=2 tokens=4" %%a in (temp.txt) do @set zeile1=%%a 
70.
 
71.
find "RAD. VERLAGERUNG IN Y-RICHTUNG" %lag%work\LAGER2.AUS > temp.txt 
72.
for /F "delims=GM  skip=2 tokens=4" %%b in (temp.txt) do @set zeile2=%%b 
73.
 
74.
find "AX. VERLAGERUNG IN Z-RICHTUNG" %lag%work\LAGER2.AUS > temp.txt 
75.
for /F "delims=GM  skip=2 tokens=4" %%c in (temp.txt) do @set zeile3=%%c 
76.
REM Werte in Ergebnisdatei schreiben 
77.
echo   %zeile1% %zeile2%%zeile3% >> H:\Lagerkram\Testlauf2\Dateien\Versch.txt 
78.
 
79.
REM LAGER2.AUS umkopieren 
80.
copy %lag%work\lager2.aus %lag%work\Lager2%nr%.aus 
81.
 
82.
set /a nr+=1 
83.
if %nr% leq %anzahl% goto :anfang 
84.
 
85.
echo fertig 
86.
 
Womit nur hab ich das verdient? Ich nehme an, das es an Steuerzeichen ("%) liegt
Bitte warten ..
Mitglied: bastla
13.08.2010 um 01:20 Uhr
Hallo Lowered!

Wenn in der "Lagerkraft.txt" die Zeilen weiterhin mit "L1", "L2", etc beginnen, wirst Du weiterhin auch das "L" in den Suchbegriff aufnehmen müssen - als Zeile 36 daher:
for /f "tokens=2-4 delims=;" %%a in ('findstr /b "L%quell_datei_nr%;" "%lager%"') do set "X=FRX = %%a" & echo %X% & set "Y=FRY = %%b" & set "Z=FAZ = %%c"
Da Du das Leerzeichen als "Delimiter" wieder entfernt hast, nehme ich an, dass Du die Schreibweise
FRY =      -0.04
der Variante
FRY = -0.04
vorziehst ...
Die Zeilen 48 und 49 lassen sich übrigens wieder zusammenfassen (den Unterschied "FRX" zu "FAZ" hatte ich leider nicht berücksichtigt):
if defined zeile for %%a in (X Y Z) do echo %zeile%|findstr /b /r /c:"F[AR]%%a =">nul && (echo %%a & call set "zeile=%%%%a%%")
Den Rest habe ich mir nur oberflächlich angesehen; auf die jeweiligen "temp.txt" würde ich jedenfalls verzichten - etwa so:
for /F "skip=2 tokens=4 delims=GM" %%a in ('find "RAD. VERLAGERUNG IN X-RICHTUNG" "%lag%work\LAGER2.AUS"') do @set "zeile1=%%a"
wobei ich im Zweifelsfall zu "findstr" anstelle von "find" tendiere ...

Grüße
bastla
Bitte warten ..
Mitglied: Lowered
13.08.2010 um 09:08 Uhr
Hello,

also das L hatte ich bewusst entfernt, das ist nicht so wichtig.

Das es mehrere Zeilen für die Variablennamen FR und FA gibt ist auch ok, da kommen noch 2-3 ganz andere dazu.

Der obige Code hat prima funktioniert als ich die ganzen Pfade noch in den jeweiligen Zeilen hatte. Das habe ich dann versucht abzukürzen, indem ich die Pfade zu den einzelnen verzeichnissen (Daten, Programme) in eine Variable schreibe und überall da wo vorher der pfad stand nun %dat% oder %lag% schreibe.
Bisherige Erkenntnis ist, es steht und fällt mit der Datei Lagerkraft. Diese wird vermutlich beim set Befehl erkannt, kann aber danach nicht geöffnet werden wenn es um das auslesen geht.

Das kommt in der Lager2.ein Datei an:

01.
$ Lagerbelastung  
02.
DREHZAHL = 1800  
03.
 
04.
 
05.
 
06.
WBETA =  0.0  
07.
WGAMMA = 0.0  
08.
$ Ende 
d. h. in dem Bereich wo FRX, FRY und FAZ in die Datei kopiert werden sollen, läuft jetzt etwas falsch. Der Vergleich zwischen Quell und Zieldatei scheint noch zu funktionieren, sonst würde ja einfach weiter kopiert werden. Nur der Inhalt der Vergleichsvariablen kommt nicht in der Lager2.ein Datei an.

Das fehlende Leerzeichen bei den Delimitern ist Opfer meiner hochprofessionellen Fehlersuche geworden ;)

Grüße und vielen Dank.

Lowered
Bitte warten ..
Mitglied: bastla
13.08.2010 um 10:01 Uhr
Hallo Lowered!
in dem Bereich wo FRX, FRY und FAZ in die Datei kopiert werden sollen, läuft jetzt etwas falsch.
Eher nicht; den Fehler würde ich, so wie Du das ohnehin schon angedeutet hattest, beim Auslesen aus der "Lagerkraft.txt" (also in Zeile 36) suchen - füge doch einfach einmal danach eine Zeile
echo %X%_%Y%_%Z% & pause
ein ...

Abgesehen davon kannst Du das "echo off" in der ersten Zeile während der Testphase in ein "echo on" änderrn und so dem Batch "beim Arbeiten zuschauen"; sinnvoll wäre es dazu auch, direkt von der Kommandozeile zu starten und vorweg über einen Klick links in der Titelleiste des CMD-Fensters die "Eigenschaften" und dort "Layout" aufzurufen und die Höhe der "Fensterpuffergröße" auf einen höheren Wert (ich verwende den Maximalwert 9999) zu setzen - so kannst Du entsprechend weit nach oben scrollen ...

Grüße
bastla
Bitte warten ..
Mitglied: Lowered
13.08.2010 um 10:50 Uhr
Hilfe zur Selbsthilfe ist eben doch die beste!

Problem gefunden und verstanden:

01.
for /f "tokens=2-4 delims=;" %%a in ('findstr /b "%quell_datei_nr%;" "%lager%"') do set "X=FRX = %%a" & echo %X% & set "Y=FRY = %%b" & set "Z=FAZ = %%c" 
hat an der Stelle 'findstr /b "%quell_datei_nr% ein Problem mit der Lagerkraft.txt
dort steht vor den Nummern 1-9 Systembedingt ein Leerzeichen.
In der Ansysausgabe muss ich für Lagernummern größer 9 aber 2Speicherplätze reservieren. Also könnte ich im APDL eine Unterschiedung beim Speichern machen, für Nr <= 9 ein Speicherplatz, Nr > 9 2 Plätze.
Oder gibt es da im Batch-Script eine Möglichkeit ein ggf. erstes Leerzeichen zu Überspringen?
Wenn ich beim Aufruf ein Leerzeichen voranstelle ==>" %quell... werden nur noch die Zeilen mit Leerzeichen gelesen.

Was macht denn "°" ?
Bitte warten ..
Mitglied: bastla
13.08.2010 um 11:36 Uhr
Hallo Lowered!

Wenn die Nummer immer 2 Zeichen umfasst (für Werte unter 10 eben ein Leerzeichen vorweg), ließe sich das so lösen:
set "quell_datei_nr= %quell_datei_n:~-1%" 
set "quell_datei_nr=%quell_datei_nr:~-2%"
Hier wird zunächst vor die aus dem Dateinamen ausgelesene Nummer auf jeden Fall ein Leerzeichen gesetzt, dann aber das Ergebnis auf die letzten beiden Stellen beschränkt - dadurch kannst Du dann wieder ganz einfach nach %quell_datei_nr%" suchen ...
Was macht denn "°" ?
Falls Du damit "^" aus dem "findstr" meinen solltest - der Hilfe kannst Du entnehmen, dass dieses Zeichen alternativ zu "/b" dazu verwendet werden kann, für die Suche "Zeilenposition: Anfang der Zeile" vorzugeben - in der konkreten Anwendung hat es einfach den Sinn, jede Zeile zu suchen, die einen Zeilenanfang hat (und das sollten nun wirklich alle vorkommenden Zeilen sein ; beim Zeilenende ist das nicht so sicher - Stichwort "Windows-Zeilenschaltung CR + LF") - also etwas kürzer formuliert: Damit werden alle Zeilen der Datei erfasst und mit "/n" nummeriert - Zweck der Übung ist es, Leerzeilen, die ansonsten in einer "for /f"-Schleife durch den Rost fallen, ebenfalls "mitzunehmen" ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
XLXS zu CSV + Wert ersetzen - Batch
gelöst Frage von jochengBatch & Shell11 Kommentare

Hallo Leute ich habe ein Problem Ich brauch ein kleines Batch Script das ich täglich laufen lassen kann das ...

Batch & Shell

Wert in mehreren XML Dateien per Script ersetzen

gelöst Frage von PaketJockeyBatch & Shell5 Kommentare

Hallo zusammen, habe an meinem Logistik-Arbeitsplatz folgendes Problem: Wir bekommen täglich massig elektronische Lieferscheine als XML Dateien. Darin müsste ...

Datenbanken

Werte aus einer Tabelle ersetzen Werte aus einer anderen Tabelle

Frage von neotm1Datenbanken2 Kommentare

Hallo, ich versuche mit MSSQL eine Abfrage hinzubekommen, in der Werte Aus Tabelle1 Spalte2 in eine andere Tabelle schreibt, ...

Batch & Shell

Batch: In Quelldatei Wert aus Liste ersetzen und Datei speichern unter

gelöst Frage von MTB4everBatch & Shell2 Kommentare

Hallo, ich habe folgendes vor: Ich habe eine Quell Datei z.B. 0000.csv in dieser Datei steht in Zeile 1 ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)5 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...