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

In Tabellen rumrechnen mittels Batch;Elemente finden und Ersetzen (Teil 1)

Mitglied: gogoflash

gogoflash (Level 2) - Jetzt verbinden

23.05.2006 um 13:33 Uhr, 18278 Aufrufe

Dieser Beitrag soll zeigen, wie man mittels Batch einfache Tabellenkalkulationen durchführen kann und Werte in einer Tabelle finden kann mit Ausgabe von Spalte und Zeile. Mit Windows Boardmitteln und mit Nutzung von Cut,Head,Tail,Sed . Hinweise, Kritik und Bemerkungen sind willkommen.

Aufgabenstellung:
- Wo ist der Wert 20 in dieser Tabelle? Ausgabe von Spalten und Zeilen Infos.
- Wie lautet der Wert in Spalte 2 und Zeile 1? Ausgabe des Wertes
- Wie ist die Summe von Element (1,2) und (2,1) ?
- Wie ist die Summe in der zweiten Spalte?
- Addiere in eine bestimmte Zeile/Spalte ohne vorherige Kenntnis des Wertes eine Zahl bzw ersetze den Wert.
- Der ganze Aufriss soll auch mit Tabellen mit mehr als 50 Spalten funktionieren.Bzw wir wollen uns nicht mit einen Haufen tokens zum Auslesen herumplagen.Und zu guter letzt soll alles auch mit beliebigen Tabelleneinträgen funktionieren.Addieren von Strings natürlich nicht.

Anmerkung:
Es ist nicht Ziel dieses Tutorials den Leser in die tiefsten Abgründe von MS Batch zu führen, was nur sehr wenigen vergönt ist, sondern anhand der obengenannten Problematik, Stategien und Tools vorzustellen, wie man die tabellenorientierte Infos (zb auch Eventlog) bearbeiten kann.

Für Diskussionen und neue Codeschnipsel ist der Beitrag:
https://www.administrator.de/wissen/in-tabellen-rumrechnen-mittels-batch ...
vorgesehen. Dort entwickelt sich der zweite Teil und Beta Versionen.

Gegeben sei der Einfachheit halber folgende Tabelle ohne doppelte Einträge (erstmal), aber jeder Eintrag ist belegt.

1;20
2;21

Trennzeichen sind erstmal Semikolons.



for /L %%c IN (1,1,%tspalt%) DO (for /L %%d IN (1,1,%tzeile%) DO echo %%c %%d >> test.txt)
</code>

Erzeugt uns eine Matrix ala:

1 1
1 2
2 1
2 2

Die wir so lesen werden.
2 1 heißt 2. Spalte 1.Zeile usw. Also die Koordinaten der Tabelle.

Inhalt der Tabelle in einer Spalte


Wir gehen die einzelnen Spalten und Zeilen durch und geben Ihren Inhalt in die farben.txt aus.

In der ersten FOR-Schleife werden die Spalten durchgegangen. Im ersten Durchgang wird die erste Spalte ausgewertet. Dann das Token in der zweiten FOR-Schleife geschoben (tokens=%1).
In der inneren FOR-Schleife wird der Beginn der Auswertung (Skip) nach oben gezählt (mittels %azeile%).
Das blöde ist, dass
  1. Die Innere FOR-Schleife mehrere Zeilen auswertet. Deshalb wird ein Counter eingebaut %count%. Der dafür sorgt, dass nur eine Zeile ausgegeben wird (unschön)
  2. In der inneren FOR-Schleife kein skip=0 stehen kann, warum auch immer. Deshalb wird unsere Tabelle mit einem Header ausgestattet, damit der Code funktioniert.

Die Tabelle sieht nun so aus:

--- tabelle----
1;20
2;21

01.
set tspalt=2
02.
set tzeile=2
03.

04.
for /L %%c IN (1,1,%tspalt%) DO (for /L %%d IN (1,1,%tzeile%) DO call :sub %%c %%d)
05.
goto :eof
06.
:sub
07.
    echo %1 %2 >> test.txt
08.
    set aspalte=%1
09.
    set /a "azeile=%2"
10.
    set /a "count=0"
11.
    for /f "skip=%azeile% delims=; tokens=%1" %%a in (tabelle.txt) Do call :sub2 %%a
12.
    goto :eof
13.
    :sub2
14.
	IF %count%==0 echo Wert %1 in Zeile %azeile% Spalte %aspalte% >> farben.txt 
15.
	set /a "count+=1"
16.
goto :eof
Erkenntnis: %%a ist der Wert in der Zelle.
%%c Spaltencounter
%%d Zeilencounter


Gibt uns aus:

Wert 1 in Zeile 1 Spalte 1
Wert 2 in Zeile 2 Spalte 1
Wert 20 in Zeile 1 Spalte 2
Wert 21 in Zeile 2 Spalte 2

findstr oder head, tail, cut?


findstr /N "20" tabelle.txt gibt uns folgendes aus:
1:1;20
Diese Ausgabe müssen wir so verarzten, dass wir die 1: als Zeileninfo auslesen können. Als Token wird : benutzt. Bietet sich hier ganz gut an.

01.
for /L %%c IN (1,1,2) DO call :sub %%c
02.
goto :eof
03.
:sub
04.
	set spalte=%1	
05.
	for /f "delims=; tokens=%1" %%a in (tabelle.txt) Do call :sub2 %%a 
06.
	goto :eof
07.
	:sub2
08.
        REM Suchen in findstr /N "%1" tabelle.txt' nach Zeilenzahl
09.
	for /F "delims=:" %%b in ('findstr /N "%1" tabelle.txt') Do set zeile=%%b
10.
	echo %1 in Spalte %Spalte%; Zeile %zeile% >> farben.txt
Aber mit findstr /N "2" tabelle.txt kommt
1:1;20
2:2;21
2:2;21
raus. Ist etwas unangenehm. Aber bedarf einiger Entwicklungsarbeit.

Vorerst scannen wir die Tabelle Element für Element durch. Ja, das ist nicht schnell.
Mit den Tools cut,head,tail kann man ohne weiteres die Aufgaben erfüllen.
Wir sehen gleich wie man diese Tools benutzt.


Frage: In welcher Spalte/Zeile befindet sich der Wert 20 ??


Hier wird der Inhalt jeder Zelle mit %wert% verglichen, wenn diese gleich sind wird die Spalte und Zeile ausgegeben.
Das Skrip in 0) wurde nur mit einer if %1==%wert% erweitert. Also mit einzelnem Auslesen jedes Elements.

  1. Tabelle benötigt einen künstlichen Header von einer Zeile. Da die erste Zeile ignoriert wird, weil SKIP in der FOR Schleife mit dem Wert Null nichts anfangen kann.
  2. Der Wert wird exakt gesucht. ZB 2020 und "Farbe 20" werden ignoriert.
  3. Wird nichts gefunden, so werden keine Daten ausgegeben in die Farben.txt
  4. Zwischen den Semikolons muss zwingend ein Wert stehen. ;; ist nicht zulässig.
  5. Werte können mehrfach in der Tabelle auftauchen.

01.
set tspalt=2
02.
set tzeile=2
03.
set wert=20
04.
for /L %%c IN (1,1,%tspalt%) DO (for /L %%d IN (1,1,%tzeile%) DO call :sub %%c %%d)
05.
goto :eof
06.
:sub
07.
    :: test.txt zum Testen
08.
    echo %1 %2 >> test.txt
09.
    set aspalte=%1
10.
    set /a "azeile=%2"
11.
    set /a "count=0"
12.
    for /f "skip=%azeile% delims=; tokens=%1" %%a in (tabelle.txt) Do call :sub2 %%a
13.
    goto :eof
14.
    :sub2
15.
	IF %count%==0 if %1==%wert% echo Wert %1 in Zeile %azeile% Spalte %aspalte% >> farben.txt 
16.
	set /a "count+=1"
17.
goto :eof
Ausgabe:
Wert 20 in Zeile 1 Spalte 2



Mittels. Head,cut.tail ?


Hier eine nette Fassung, die direkt die Elemente anspringt. Diese gibt uns die Anzahl der Treffer und die Positionen der Elemente an.
Diese benötigt in der Tabelle keinen künstlichen Header und die einzelnen Zellen können leer sein.
Geht also auch für eine Tabelle
; ;;;;;20;9;;
;;;3;8899;

Befehle
head -3l tabelle.txt gibt uns die ersten 3 Zeilen von tabelle.txt aus.

tail -1l tabelle.txt gibt uns die letzt Zeile aus (wird von hinten gezählt).

cut -d; -f2 tabelle.txt gibt uns die zweite Spalte (f2) der Tabelle aus. mit d; wird das Trennzeichen übergeben.

head -3l %tabelle%|tail -1l|cut -d; -f2
gibt uns also das 2 Element der 3 Spalte aus.

01.
REM Tabelleninfos
02.
set tabelle=tabelle.txt
03.
set delimiter=;
04.
set tspalt=4
05.

06.
set output=farben.txt
07.
set tempd=temp.txt
08.
set wert=miguel
09.

10.
REM Um die Anzahl der Treffer zu bestimmen.
11.
set /a "count=0"
12.

13.
REM Suchen nach dem Element mit findstr. Zeilen herausfischen und das an Tab übergeben.
14.

15.
for /L %%c in (1,1,%tspalt%) Do for /f "delims=:" %%a in ('more %tabelle%^|findstr /N "%wert%"') Do call :tab %%a %%c 
16.
if not %count%==0 (echo Anzahl Treffer %count% >> %output%) else echo nichts gefunden >> %output%
17.

18.
goto :eof
19.

20.
REM Element ausgeben
21.
:tab 
22.
   head -%1l %tabelle%|tail -1l|cut -d%delimiter% -f%2 >> %tempd%   
23.
   for /f %%a in (%tempd%) Do IF %%a==%wert% echo Wert ist in Spalte %2 und Zeile %1 >> %output% && set /a "count+=1"
24.
   del temp.txt
25.
goto :Eof
Hier ist noch, dass Problem, dass mittels findstr auch Teile eines Elementes gefunden werden beseitigt. Zwar findet findstr bei "20" auch 2000 und 200. Aber durch die Prüfung des Wertes in der inneren FOR Schleife, wird dieses Problem beseitigt.

Frage: Welcher Wert enthält Spalte 2, Zeile 1 ?


Erstmal mit dem Skript unter 2/3). Ist zwar etwas umständlich, da die gesamte Tabelle durchgescant wird.

Ist der Spaltenzähler gleich x und der Zeilenzähler gleich y. Wird die Zelle ausgegeben.

01.
set tspalt=2
02.
set tzeile=4
03.

04.
set x=1
05.
set y=4
06.

07.
for /L %%c IN (1,1,%tspalt%) DO (for /L %%d IN (1,1,%tzeile%) DO call :sub %%c %%d)
08.
goto :eof
09.
:sub
10.
    set /a "aspalte=%1"
11.
    set /a "azeile=%2"
12.
    set /a "count=0"
13.
    for /f "skip=%azeile% delims=; tokens=%1" %%a in (tabelle.txt) Do call :sub2 %%a
14.
    goto :eof
15.
    :sub2
16.
	IF %count%==0 if %aspalte%==%x% if %azeile%==%y% echo %1 >> farben.txt 
17.
	set /a "count+=1"
18.
goto :eof
Gibt uns wie erwartet 20 aus.

Welcher Wert enthält Spalte 2, Zeile 1 mittels head, cut, tail?



Aber die Befehle verweigern sich in einer FOR Schleife zu arbeiten, deshalb wird eine temp.txt erzeugt, die den aktuellen Wert enthält.

01.
set tabelle=tabelle.txt
02.
set delimiter=;
03.

04.
set y=2
05.
set x=2
06.

07.
call :tab %y% %x%
08.
echo Wert ist %ausgabew% >> farben.txt
09.
goto :eof
10.

11.
REM Element ausgeben
12.
:tab 
13.
   head -%1l %tabelle%|tail -1l|cut -d%delimiter% -f%2 >> temp.txt
14.
   for /f %%a in (temp.txt) Do set ausgabew=%%a
15.
   del temp.txt
16.
goto :Eof

Bestimmen der Spalten und Zeilenzahl einer Datei mit Semikolons als Trennzeichen.


Schön wäre es, wenn wir aus der Tabelle ohne weiteres die Zeilenzahl und Spaltenzahl herausziehen könnten, damit können wir an das Skript einfach eine Tabelle übergegen und der Rest wird vom Skript erledigt.

Idee. Mit Findstr werden die Semikolons gesucht. Die Ausgabe ist ja

ZB:

1:2;20
2:45;56

In der ersten Zeile ist die Zeilennummer. Interessieren tuen wir uns nur für die letzte Zeile der Ausgabe, diese ist ja die Zeilenzahl der Tabelle.

Die Spaltenzahl wird etwas komplizierter gesucht.
Die Zeichen einer Spalte einzeln auf Belegung geprüft. Ist kein Wert vorhanden ist die Zeile zuende.Wobei dabei ausgenutzt wird, dass die for Schleife irgendwann einen Fehler ausgibt uns selbst rausspringt (sonst wäre es eine Endlosschleife.) (Very Dirty)


01.
REM Tabelleninfos
02.
set tabelle=tabelle.txt
03.
set delimiter=;
04.
set header=1
05.

06.
set output=farben.txt
07.

08.
for /f "delims=:" %%b in ('more +%header% %tabelle%^|findstr /N "%delimiter%"') DO set /a "zeilenzahl=%%b"
09.
set /a "count=0"
10.

11.
:beginnt	
12.
	set /a "count+=1"
13.
        for /f "tokens=%count% delims=%delimiter%" %%a in ('more +%zeilenzahl% %tabelle%') DO goto :beginnt
14.

15.
set /a "spaltenzahl=%count%-1"
16.
echo Spalten %Spaltenzahl%; Zeilen %Zeilenzahl%; Header %header% >> %output%
17.

Spalten und Zeilenzahl mit Cut;head,Tail.


Man kann die Zeilenzahl auch mit grep -c ; tabelle.txt herausbekommen.

Zwingend bei diesem Code ist also, dass es keine leeren Elemente gibt und wie es mit anderen Trennzeichen ist ???

01.
REM Tabelleninfos
02.
set tabelle=tabelle.txt
03.
set delimiter=;
04.
set header=1
05.

06.
set output=farben.txt
07.
set tempd=temp.txt
08.

09.
for /f "delims=:" %%b in ('more +%header% %tabelle%^|findstr /N ";"') DO set /a "zeilenzahl=%%b"
10.

11.
set /a "count=0"
12.

13.
:beginnt
14.
	del %tempd%
15.
	set /a "count+=1" 
16.
	head -2l %tabelle%|tail -1l|cut -d%delimiter% -f%count% >> %tempd%  
17.
	for /f %%a in (%tempd%) Do IF not defined %%a (goto :beginnt)
18.

19.
del %tempd%
20.
set /a "spaltenzahl=%count%-1"
21.
echo Spalten %Spaltenzahl%; Zeilen %Zeilenzahl%; Header %header% >> %output%
22.


Alles zusammen in einem Skript



01.
@echo off
02.
REM Tabellenbatch mit CUT,TAIL,HEAD,FINDSTR
03.
@echo off
04.
REM ----------------------------------------------------
05.
REM Externe Paramter
06.
set tabelle=tabelle.txt
07.
set delimiter=;
08.
set header=1
09.
REM ----------------------------------------------------
10.

11.
REM ----------------------------------------------------
12.
REm Interne Paramter
13.
set tempd=%temp%	abtemp.txt
14.
set output=farben.txt
15.
set /a "count=0"
16.
REM ----------------------------------------------------
17.

18.

19.
:main
20.
REM ----------------------------------------------------
21.
REM Externe Paramter
22.
set tabelle=tabelle.txt
23.
set delimiter=;
24.
set header=1
25.
REM ----------------------------------------------------
26.

27.
REM Hier kommen die Befehle rein
28.

29.

30.

31.

32.
REM----
33.

34.
goto :eof
35.

36.
REM -----------------------------------------
37.
REM tabelleninfos
38.

39.
REM Zeilenzahl bestimmen
40.
:spaltcount
41.

42.
set /a "countt=0"
43.
        if not defined zeilenzahl call :zeilencount
44.
	:beginnt	
45.
	set /a "countt+=1"
46.
        for /f "tokens=%countt% delims=%delimiter%" %%a in ('more +%zeilenzahl% %tabelle%') DO goto :beginnt
47.

48.
set /a "spaltenzahl=%countt%-1"
49.

50.
goto :eof
51.
REM -----------------------------------------
52.

53.
REM -----------------------------------------
54.
REM Spaltenzahl ermitteln
55.
:zeilencount
56.
	for /f "delims=:" %%b in ('more +%header% %tabelle%^|findstr /N "%delimiter%"') DO set /a "zeilenzahl=%%b"
57.
goto :eof
58.
REM -----------------------------------------
59.

60.
REM -----------------------------------------
61.
REM Element ausgeben
62.
:element   
63.
   REM Header berücksichtigen
64.
   if exist %tempd% del %tempd%
65.
   set /a "yoff=%1+%header%"  
66.
   head -%yoff%l %tabelle%|tail -1l|cut -d%delimiter% -f%2 >> %tempd%
67.
   for /f %%a in (%tempd%) Do set ausgabew=%%a
68.
   del %tempd%
69.
goto :Eof
70.
REM -----------------------------------------
71.

72.
REM -----------------------------------------
73.
:suche
74.
   if exist %tempd% del %tempd%
75.
   set /a "count=0"
76.
   if not defined spaltenzahl call :spaltcount
77.
   for /L %%c in (1,1,%spaltenzahl%) Do for /f "delims=:" %%a in ('more %tabelle%^|findstr /N "%wert%"') Do call :sub %%a %%c 
78.
   goto :eof
79.
   :sub
80.
   set /a "yoff=%1"
81.
   set /a "ya=%1-%header%"
82.
   head -%yoff%l %tabelle%|tail -1l|cut -d%delimiter% -f%2 >> %tempd%   
83.
   for /f %%a in (%tempd%) Do IF %%a==%wert% echo Wert %wert% gefunden in Spalte %2 und Zeile %ya% >> %output% && set /a "count+=1"
84.
   del %tempd%
85.
   goto :eof
86.
REM -----------------------------------------
87.

88.

89.
REM -----------------------------------------
90.
:ausgabe
91.
echo Wert ist %ausgabew% >> %output%
92.
if defined wert (if not %count%==0 (echo Anzahl Treffer %count% >> farben.txt) else echo nichts gefunden >> %output%)
93.
if defined %spaltenzahl% if defined %zeilenzahl% echo Spalten %Spaltenzahl%; Zeilen %Zeilenzahl%; Header %header% >> %output%
94.
goto :eof
95.
REM -----------------------------------------
96.

97.
-----------------------------------------------------------------------------------------------------------------------------------
98.

99.
Da unser Hauptprogramm definiert ist, wird ab hier nur noch der Hauptteil des Codes gezeigt.
100.

101.

102.

Anwendung und weitere Beispiele.


Frage: Element: 1 Zeile und 2 Spalte plus Element: 2 Zeile und 1 Spalte


01.
:main
02.
REM Ersten Wert auslesen
03.
set y=1
04.
set x=2
05.
call :element %y% %x%
06.
set /a "Summe+=%ausgabew%"
07.

08.
REM zweiten Wert auslesen
09.
set x=1
10.
set y=2
11.
call :element %y% %x%
12.
set /a "Summe+=%ausgabew%"
13.

14.
REM Ergebnis
15.
echo summe ist %summe% >> summe.txt
16.
goto :eof

Frage: Summe der Elemente in der ersten Spalte


ohne Kommentar.

01.
:main
02.

03.
call :zeilencount
04.
set x=1
05.

06.
call :addiere
07.
echo summe in der Spalte %x% ist %summe% >> summe.txt
08.

09.
goto :eof
10.

11.
:addiere
12.
for /L %%a in (1,1,%zeilenzahl%) DO call :sum %%a 
13.
goto :eof
14.
:sum
15.
call :element %1 %x%
16.
set /a "Summe+=%ausgabew%" 
17.

18.
goto :eof

Frage: Summe der Elemente in der ersten Zeile


ohne Kommentar.

01.
:main
02.

03.
call :zeilencount
04.
call :spaltcount
05.

06.
set y=1
07.

08.
call :addiere
09.
echo summe in der Zeile %y% ist %summe% >> summe.txt
10.

11.
goto :eof
12.

13.
:addiere
14.
for /L %%a in (1,1,%spaltenzahl%) DO call :sum %%a 
15.
goto :eof
16.
:sum
17.
call :element %y% %1
18.
set /a "Summe+=%ausgabew%" 
19.

20.
goto :eof
21.

Suchen eines Elementes in der ersten Spalte **


Wir schränken die Suche auf eine bestimmte Zeile ein.

01.
:main
02.

03.
call :zeilencount
04.
call :spaltcount
05.

06.
REM Suchen in der ersten Spalte
07.
set wert=2
08.

09.
set x=1
10.
for /l %%a in (1,1,%zeilenzahl%) DO call :typb %%a
11.
goto :eof
12.
:typb
13.
call :element %1 %x%
14.
IF %ausgabew%==%wert% echo %wert% in Zeile %1 >> signal.txt 
15.

16.
goto :eof

Addiere 8 auf den Wert in der zweiten Spalte und zweiten Zeile und schreibe Ihn in die Tabelle


Hierfür wird sed benutzt.
(Quelle und Anleitung: http://www.student.northpark.edu/pemente/sed/sedfaq.html )

Für den Anfang sei folgendes gesagt.

sed "5 s/45/50/1" tabelle.txt > ausgabe.txt

Macht folgendes: In der 5 Zeile wird das erste Vorkommen (1) von 45 durch 50 ersetzt. Die gesamte Tabelle wird in ausgabe.txt ausgegeben.

set "1,5 s/45/50/g" tabelle.txt > ausgabe.txt

Ersetzt uns von der Zeile 1 bis 5 die 45 gegen 50. g steht hier für global.

set "s/45/50/g" tabelle.txt > ausgabe.txt

Ersetzt alle 45 gegen 50.


Für den Anfang begnügen wir uns, damit das in der Tabelle keine doppelten Elemente vorkommen.

Also nicht 50;50 oder 4050;50.

Ziel soll es aber sein ein bestimmtes Element zu ersetzen. (Wird noch gebaut)


Jetzt der Code.

01.
set header=1
02.
:main
03.
call :zeilencount
04.
call :spaltcount
05.

06.
set y=3
07.
set x=2
08.

09.
REM Wert auslesen
10.
call :element %y% %x%
11.

12.
REM Addiere etwas drauf
13.
set /a "ausgabeneu=%ausgabew%+8"
14.

15.
REM Berücksichtigung des Headers
16.
set /a "yoff=%y%+%header%"
17.

18.
REM in Zeile springen und erstes Vorkommen dort mit neuem Wert ersetzen
19.
sed "%yoff% s/%ausgabew%/%ausgabeneu%/1" %tabelle% > %output%
20.

21.
goto :eof
22.
Eine Verfeinerung und Verbesserung der bisherigen Ergebnisse werden bei bedarf und Interesse im zweiten Teil durchgekaut.

Ich hoffe ein bischen von den Möglichkeiten von Batch aufgezeigt zu haben und die Benutzung von Tools nähergebracht zu haben.

In allen Codeschnipseln steckt bestimmt noch eine Menge Entwicklungspotential, mit den Entsprechnende Ideen und Werkzeugen läßt sich bestimmt noch mehr rausholen. (Mal den Batch Biber fragen).


Gruß Miguel
Ähnliche Inhalte
Windows 10
Win10-Aktivierungsfrust Teil III
Tipp von DerWoWussteWindows 106 Kommentare

"Nicht schon wieder Ihmchen mit seinem Aktivierungsfrust" wird jetzt hoffentlich keiner denken ;-) Ich habe Neuigkeiten zu meinen Beobachtungen ...

Windows 10
Win10-Aktivierungsfrust Teil II
Erfahrungsbericht von DerWoWussteWindows 1014 Kommentare

Ein kleiner Erfahrungsbericht über den Microsoft-Aktivierungssupport. Ich habe diverse Win8.1 Pro (non-VL) auf Win10 Pro inplace upgegradet, alles lief, ...

Vmware

Leistungsdaten sind für dieses Element derzeit nicht verfügbar, vSphere

Tipp von StefanKittelVmware

Hallo, ich installiere gerade nach Kundenvorgaben einen vSphere 5.5 und bin dabei auf ein ungewöhnliches Verhalten gestossen. Da ich ...

Batch & Shell

Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens

Tipp von HopfmanBatch & Shell17 Kommentare

Ich habe eine ständig wachsende Anzahl von Dateien aus unterschiedlichen Quellen, die in Unterverzeichnisse verschoben werden sollen. So weit ...

Neue Wissensbeiträge
Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 1 TagInternet

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter die Seitenbetreiber ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 1 TagGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 1 TagGoogle Android2 Kommentare

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Exchange Server

Exchange 2010 bis 2019 Sicherheitslücke durch CU RU schließen

Information von sabines vor 1 TagExchange Server

Für die hier: und hier: besprochene Sicherheitslücke ist ein Patch für Microsoft Exchange Server 2010 - 2019 verfügbar. RU ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
NETBEUI unter Windows 10
Frage von certifiedit.netLAN, WAN, Wireless26 Kommentare

Guten Abend, wir stehen gerade vor dem Rästel, warum man in einer Industriemaschine (wert gut 6-stellig, paar mal vorhanden) ...

Hardware
Was passiert wenn ein Server zu heiß wird?
Frage von LohrakHardware21 Kommentare

Hallo Sollte ein Server zu heiß werden, da z.B ein Lüfter ausfällt, was würde passieren? Wie meldet sich der ...

Linux Userverwaltung
LogIn Versuche beschränken auf EINEN Versuch
gelöst Frage von GarroshLinux Userverwaltung18 Kommentare

Folgendes Problem Ich habe einen dezidierten Server beim Hoster gemietet, installiert ist Ubuntu 18.04.2 LTS‬ und als Webinterface Plesk. ...

Internet
Aktuell HP-Support-Seite kaputt?
gelöst Frage von LochkartenstanzerInternet12 Kommentare

Hallo Kollegen, Weiß einer von euch, seit wann die HP-Support-Seite kaputt ist? ) Wollte heute morgen Druckertreiber runterladen und ...