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 Bestimmtes Wort aus einer Textdatei löschen

Mitglied: ITSchlumpf

ITSchlumpf (Level 1) - Jetzt verbinden

13.10.2011, aktualisiert 18.10.2012, 4366 Aufrufe, 18 Kommentare

Hallo zusammen,

ich möchte mittels Batch bestimmte Zeilen aus einer Textdatei löschen. Habe hier auch schon paar sachen gesehen, aber irgendwie noch nichts was zu meinem Problem passt.

Der Hintergrund ist, dass ich mittels Batch eine Textdatei auslese in welcher Computernamen stehen und dort dann Lizenzschlüssel auslese. Jetzt möchte ich aber nicht jedesmal bei der Ausführung des Skriptes alle Rechner abfragen sondern nur die, die ich noch nicht ausgelesen habe.
Deswegen würde ich die erfolgreich ausgelesen Rechner gerne aus der Liste löschen. Somit möchte ich auch verhindern, dass in meiner Excel-Datei Rechner+Lizenz 2 mal auftauchen.

Vielen dank schonmal für eure Tipps

Grüße
Schlumpf
Mitglied: 60730
13.10.2011 um 16:56 Uhr
Servus,

aber irgendwie noch nichts was zu meinem Problem passt

So was aber auch..

(OT)
Scheibenkleister mittlerweile ist es hier genauso schlimm, wie im MCSE Forum - aus dem ich mich vor Jahren abgemeldet hab, weil da nur noch Anspruchsvolle Fragen von "Kollegen" gestellt wurden, die wohl niemals nie einen MSCx machen werden.
(/OT)

Wer die Suchfunktion nicht benutzt und dieses Forum mit Banalitäten beschmutzt
wenn einem gutes widerfährt, dass ist dann einen Wenig anspruchsvoll wert.
Bitte warten ..
Mitglied: Skyemugen
13.10.2011 um 17:51 Uhr
Aloha T-Mo,

da ich gerade Twix futter *mampf*, mach ich eben mal zwei daraus ...

ich möchte demnächst jedes Mal 5 Euronen erhalten, wenn ein TE behauptet, er habe nichts passendes zu seinem Problem gerade in Sachen Batch gefunden ... nie wieder arbeiten müssen

greetz André
Bitte warten ..
Mitglied: Friemler
13.10.2011 um 18:12 Uhr
Hallo ITSchlumpf,

ich nehme zu deinen Gunsten mal an, dass du in Batchscript einfach nicht fit genug bist, um bestehende Lösungen auf dein Problemchen umzustricken. Deshalb hier die Skizze einer Lösung:
01.
@echo off & setlocal
02.

03.

04.
set "CList=ComputerListe.txt"
05.
set "TempCList=TempListe.txt"
06.

07.

08.
type NUL > "%TempCList%"
09.

10.
for /f "usebackq delims=" %%c in ("%CList%") do (
11.
  call :CheckLic "%%c" || >>"%TempCList%" echo %%c
12.
)
13.

14.
move /y "%TempCList%" "%CList%"
15.

16.
exit /b
17.

18.

19.
:CheckLic
20.
  ::Wenn Rechner gefunden und Lizenzkey ausgelesen werden konnte
21.
  exit /b 0
22.
  
23.
  ::Sonst
24.
exit /b 1
Dir bleibt jetzt noch die Aufgabe, das Unterprogramm CheckLic mit Leben zu füllen. Je nachdem ob das Auslesen des Lizenzkeys erfolgreich war oder nicht, muss das Unterprogramm mit exit /b x entweder 0 (erfolgreich) oder einen von 0 verschiedenen Wert, z.B. 1, (nicht erfolgreich) zurück liefern. Bei "nicht erfolgreich" wird der aktuelle Rechnername in eine temporäre Datei geschrieben, durch die zum Schluss die originale Datei ersetzt wird.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
13.10.2011 um 20:16 Uhr
@Friemler
Wozu eigentlich das "/y" beim "move"?
Und außerdem: Warum nicht ein simples "findstr /v" (ggf mit "/i")?

Grüße
bastla
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 08:12 Uhr
Hallo Friemler,

du hast mein Problem richtig erkannt. Ich bin ein Batch - Neuling und versuche mich da Schritt für Schritt einzuarbeiten aber ist halt nicht immer so einfach. Zudem ich versuche ja die Scripte anderer umzubauen aber wenn ich es eben nicht hinbekommen frag ich eben nach.
Dafür bin ich ja auch in so einem Forum angemeldet. Aber okay, wer nicht helfen möchte, brauch ja eig auch nichts dazu schreiben.

So thema wechsel. Danke für den Code. Werd ihn gleich mal testen.
@bastla:
01.
type D:\Batch\test_loeschen_zeilen\test.txt |find  /i %eeepc% >temp.txt && move /y temp.txt D:\Batch\test_loeschen_zeilen\test2.txt
Hast du sowas gemeint mit find? Sowas hab ich hier im Forum gefunden, aber leider macht es noch nicht ganz das was ich möchte bzw. es macht garnichts.
Naja dann werd ich mal weiter testen.

Vielen dank schonmal

Gruß
Schlumpf
Bitte warten ..
Mitglied: Skyemugen
14.10.2011 um 08:22 Uhr
Zitat von ITSchlumpf:
du hast mein Problem richtig erkannt. Ich bin ein Batch - Neuling und versuche mich da Schritt für Schritt einzuarbeiten aber ist halt nicht immer so einfach. Zudem ich versuche ja die Scripte anderer umzubauen aber wenn ich es eben nicht hinbekommen frag ich eben nach.
Falsch! Du fragst nicht nach, sondern fragst vom Fundament aus. Wenn du nicht weiterkommst, dann solltest du bereits einen Code haben, wo du glaubst, daran könnte man weiterarbeiten und auch nur dann - denn so neu bist du auch nicht mehr - würden Leute wie T-Mo und ich dir weiterhelfen ... wenn du aber nur mit plain-Text ankommst und von Grund auf hier etwas geschenkt bekommen willst, obwohl wir so viele Threads mit so vielen Erklärungen haben - zu einem dauerdurchgekauten Thema, dann tut es mir leid aber dann darfst du nicht viel erwarten.

Dafür bin ich ja auch in so einem Forum angemeldet. Aber okay, wer nicht helfen möchte, brauch ja eig auch nichts dazu schreiben.
Stimmt, weil wir so ungern helfen ...

P.S.:
01.
set "eeepc=Inhalt der weg soll"
02.
type D:\Batch\test_loeschen_zeilen\test.txt |find /v /i "%eeepc%">temp.txt && move /y temp.txt D:\Batch\test_loeschen_zeilen\test2.txt
... ohne Zollzeichen um die Variable bekommst du eine aussagekräftige Fehlermeldung: FIND: Parameterformat falsch und mit definiertem Inhalt der Variable nimmt er die Zeilen auch raus ...

E:\Skripte>type E:\Skripte\datei.txt
Also in Zeile eins kommt wohl nichts
von dem gesuchten Wort
vor aber eventuell
in Zeile vier cowabunga

oder Zeile sechs, die beim Neuschreiben
noch nach der Leerzeile da bleibt, wenn
Zeile acht auch wieder Cowabunga
enthaelt na, mal sehen.

E:\Skripte>pause
Drücken Sie eine beliebige Taste . . .

E:\Skripte>set "eeepc=cowabunga"

E:\Skripte>type E:\Skripte\datei.txt   | find /v /i "cowabunga"  1>temp.txt  &&
move /y temp.txt E:\Skripte\datei2.txt

E:\Skripte>pause
Drücken Sie eine beliebige Taste . . .

E:\Skripte>type E:\Skripte\datei2.txt
Also in Zeile eins kommt wohl nichts
von dem gesuchten Wort
vor aber eventuell

oder Zeile sechs, die beim Neuschreiben
noch nach der Leerzeile da bleibt, wenn
enthaelt na, mal sehen.

E:\Skripte>pause
Drücken Sie eine beliebige Taste . . .
Bitte warten ..
Mitglied: Friemler
14.10.2011 um 09:37 Uhr
Zitat von bastla:
Wozu eigentlich das "/y" beim "move"?
Öhm, davon hatte ich gerade eins zuviel

Zitat von bastla:
Und außerdem: Warum nicht ein simples "findstr /v" (ggf mit "/i")?
Verstehe ich in diesem Zusammenhang nicht.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
14.10.2011 um 10:36 Uhr
@Friemler
Verstehe ich in diesem Zusammenhang nicht.
Je nach Ablauf (die diesbezügliche Beschreibung durch den TO hat noch Potenzial ) ginge es doch eigentlich nur darum, jeweils die Zeile des entsprechenden Rechners aus der Datei zu entfernen - also eigentlich (unter Annahme eines Trennzeichens ";"):
findstr /i /b /v "%Rechnername%;" "%DateiAlt%">"%DateiNeu%"
Grüße
bastla
Bitte warten ..
Mitglied: 60730
14.10.2011 um 11:24 Uhr
Last Orders please...

Da unser IT Schlumpf sich wohl mittlerweile (welche Farbe haben die denn) geärgert hat, sein Feedback wohl erst dann kommt, wenn der Weihnachtsmann mit dem Hansi Hintermsee Schuhpladdeln geht...
Spiele ich mal ausnahmsweise den heiligen Netzwerg. In der Hoffnung, dass wir in bälde einen ITschlumpfarbenen Siemenslufthaken unter der Nummer stehen haben.

Daten löschen - warum überhaupt das versteh ich nicht.
01.
for /f "tokens=1,2 delims=;" %%a in (C:\script\tabellen\tabelle.txt) do if "%%b" == "" echo %%a hat keine Seriennummer
02.
pause
03.
if exist C:\script\tabellen\tabelle.ini del C:\script\tabellen\tabelle.ini
04.
for /f "tokens=1,2 delims=;" %%a in (C:\script\tabellen\tabelle.txt) do if not "%%b" == "" echo %%a;%%b>>C:\script\tabellen\tabelle.ini
05.
pause
@me myselfandI
ITSchlumpf==cooler Nick muß ich mir merken. "ich hab nix gefunden"=="ich hab nix gemacht" Acho Pfade und Dateinamen muß man sich wie in den anderen fast ähnlichen, aber nicht gganz passenden Treffern auch anpassen - oder vom Profi anpassen lassen.

Amen
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 11:42 Uhr
@Timo: Warum inhalte der Textdatei löschen? Ganz einfach.
Mein Skript läuft momentan so ab, dass ich eine Textdatei mit Rechnernamen habe welche ausglesen wird und dann überprüft wird, ob auf dem Rechner Programm A oder B läuft und dann die Lizenz hierfür ausgelesen wird.
Wenn ich das Skript aber mehrmals durchlaufen lasse, da ich nicht auf anhieb alle Rechner erwische zwecks Zeitverschiebung etc., schreibt mir das Skript die Lizenzen doppelt in die Excel datei.
Deswegen war der Gedanken dahinter, ich lösche die erfolgreichen raus und muss dann nur noch die Abfragen, die noch nicht durchgelaufen sind.
Achja hatte heute morgen leider noch was anderes zu tun und konnte deswegen nicht ständig testen und probieren ;)

@bastla: Ansatz sieht gut aus, aber dann löscht er mir ja nicht die Daten aus der Textdatei raus sondern schreibt sie nur in eine andere rein. Oder sehe/teste ich das falsch?

@Friemler: Das sieht cool aus, ich weiß nur noch nicht ganz wie ich das richtig einbauen kann. Muss ich wohl noch etwas testen und rumspielen ;)

Vielen danke auf jedenfall für die ganze Hilfe ;)

Gruß
Schlumpf
Bitte warten ..
Mitglied: Skyemugen
14.10.2011, aktualisiert 18.10.2012
Zitat von ITSchlumpf:
@bastla: Ansatz sieht gut aus, aber dann löscht er mir ja nicht die Daten aus der Textdatei raus sondern schreibt sie nur in eine andere rein. Oder sehe/teste ich das falsch?
.... ... poc zu anspruchsvoll? bastlas Weg ist kürzer, ich hielt mich an deinen Code, der ja gar nichts macht ... und beide tun dasselbe ... ich bezweifle, dass du wirklich was testest ...

kann mir bastla mal sein noch nicht vergebenes nicht anspruchsvoll bitte leihen ...

Das sieht cool aus

seit wann sehen codes cool aus, gibt's hier B-Noten für den Style oder wie?
Bitte warten ..
Mitglied: 60730
14.10.2011 um 11:52 Uhr
Zitat von ITSchlumpf:
@Timo: Warum inhalte der Textdatei löschen? Ganz einfach.
Mein Skript

  • sorry - aber dein Skript sehe ich nicht - muß ich die Augenklappe hochheben, oder du das Script hier reinmalen?
Wenn ich das Skript aber mehrmals durchlaufen lasse, da ich nicht auf anhieb alle Rechner erwische zwecks Zeitverschiebung etc., schreibt mir das Skript die Lizenzen doppelt in die Excel datei.
  • wofür denkst du, habe ich dir u.a diese Zeile
01.
for /f "tokens=1,2 delims=;" %%a in (C:\script\tabellen\tabelle.txt) do if "%%b" == "" echo %%a hat keine Seriennummer 
hingemalt? echo %%a hat keine Seriennummer steht für Hallo mach was mit "mir" was auch immer - siehe ich Augenklappe oder du tipps.........

Deswegen war der Gedanken dahinter, ich lösche die erfolgreichen raus und muss dann nur noch die Abfragen, die noch nicht durchgelaufen sind.
  • Warum löschen? Und dann ausgerechnet die "Erfolgreichen?"

@Bastla: Ansatz sieht gut aus, aber dann löscht er mir ja nicht die Daten aus der Textdatei raus sondern schreibt sie nur in eine andere rein. Oder sehe/teste ich das falsch?
Du kannst "in Batch ohne Tricks" keine Zeilen löschen - das muß man mit "Tricks" machen und der Bastlasche Trick ist nur ein anderer Weg

Vielen danke auf jedenfall für die ganze Hilfe ;)

Gruß
Schlumpf

zurück und bitte - lese dir alle Antworten durch - so Seitenhiebe wie (die diesbezügliche Beschreibung durch den TO hat noch Potenzial ) haben "leider" eine Daseinsberechtigung.
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 12:15 Uhr
@Timo:
01.
Title RegEdit OPC
02.
SetLocal
03.
SET pc=rechner.txt
04.
help /? > temp.txt 
05.
find "Befehl" temp.txt 
06.
if %errorlevel% ==0 goto german 
07.
find "command" temp.txt 
08.
if %errorlevel% ==0 goto eng 
09.

10.
:eng
11.
for /f %%a in (%pc%) do call :Maineng %%a
12.

13.
:Maineng
14.
Set eeepc=%1
15.
ping %eeepc% -n 2
16.
if %errorlevel% == 0 (goto aneng) else (goto eof2)
17.

18.
:aneng
19.
if exist "\\%eeepc%\C$\TwinCAT\OPC\Server4\TcOPCCfg.exe" goto Beckhoffeng
20.
if exist "\\%eeepc%\C$\Program Files\Softing\OPCTray\OPCTray.exe" (goto Softingeng) else (goto eof2)
21.

22.
:Beckhoffeng
23.
sc \\%eeepc% start RemoteRegistry
24.
ping -n 2 %eeepc% |find "Empfangen = 2" && for /f "tokens=3" %%i in ('reg query "\\%eeepc%\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "Key"') do if not "%%i"=="" echo %eeepc%, %%i, %date% >> Beckhoff.csv 
25.
::Hier soll der Rechnername aus dem Textfile gelöscht werden
26.
goto eof1
27.

28.
:Softingeng
29.
sc \\%eeepc% start RemoteRegistry
30.
ping -n 2 %eeepc% |find "Empfangen = 2" && for /f "tokens=3" %%i in ('reg query "\\%eeepc%\HKLM\Software\Softing\License\22"^|findstr "lic"') do if not "%%i"=="" echo %eeepc%, %%i, %date% >> Softing.csv
31.
::Hier soll der Rechnername aus dem Textfile gelöscht werden
32.
goto eof1
33.

34.
:german 
35.
for /f %%a in (%pc%) do call :Maingerm %%a
36.
goto eof2
37.

38.
:Maingerm
39.
Set eeepc=%1
40.
ping %eeepc% -n 2
41.
if %errorlevel%==0 (goto angerm) else (goto eof2)
42.

43.
:angerm
44.
if exist "\\%eeepc%\C$\TwinCAT\OPC\Server4\TcOPCCfg.exe" goto Beckhoffgerm
45.
if exist "\\%eeepc%\C$\Programme\Softing\OPCTray\OPCTray.exe" (goto Softinggerm) else (goto eof2)
46.

47.
:Beckhoffgerm
48.
sc \\%eeepc% start RemoteRegistry
49.
ping -n 2 %eeepc% |find "Empfangen = 2" && for /f "tokens=3" %%i in ('reg query "\\%eeepc%\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "Key"') do if not "%%i"=="" echo %eeepc%, %%i, %date% >> Beckhoff.csv
50.
::Hier soll der Rechnername aus dem Textfile gelöscht werden
51.
goto eof1
52.

53.
:Softinggerm
54.
sc \\%eeepc% start RemoteRegistry
55.
ping -n 2 %eeepc% |find "Empfangen = 2" && for /f "tokens=3" %%i in ('reg query "\\%eeepc%\HKLM\Software\Softing\License\22"^|findstr "lic"') do if not "%%i"=="" echo %eeepc%, %%i, %date% >> Softing.csv
56.
::Hier soll der Rechnername aus dem Textfile gelöscht werden
57.
goto eof1
58.

59.
:eof1
60.
sc \\%eeepc% stop RemoteRegistry
61.

62.
:eof2
Das habe ich bisher als Grundlage genommen und wollte eben noch die Zusatzfunktion des löschens der Textdatei falls erfolgreich. Also ich habe schon was gemacht nur bei diesem Thema bin ich dann hengengeblieben.
Bitte warten ..
Mitglied: 60730
14.10.2011 um 12:29 Uhr
Au Backe...

ping -n 2 %eeepc% |find "Empfangen = 2"
ist doch doppelter Bullshit...

Du fragst vorher nach enu oder ger ab - dann aber immer nach empfangen, was ENU niemals nie nicht liefert.
TTL liefert sogar ein Lampukisches XP...

if exist "\\%eeepc%\C$\TwinCAT\OPC\Server4\TcOPCCfg.exe" goto Beckhoffeng
if exist "\\%eeepc%\C$\Program Files\Softing\OPCTray\OPCTray.exe" (goto Softingeng) else (goto eof2)

  • keine Ahnung, was das soll.. Wenn die Kiste TwinCAT hat, dann hat die niemals nie nicht kein OPCTray?
if exist "\\%eeepc%\C$\Progra~1\Softing\OPCTray\OPCTray.exe"
liefert - x64 sehe ich eh nirgendwo - immer den Pfad, den du willst - egal ob enu/deu oder Lampukisch


"Eigentlich" gings dir u.a um Zeile 55 - aber ehrlich, das würde ich mir nicht antun und das Ding mal locker um die hälfte eindampfen, das kann doch ohne REM keiner warten..
Siehe deine Zeile 46 - Beckhoffeng da rennt er immer hin....

do if not "%%i"=="" findstr /c:"%eeepc%, %%i, "Softing.csv" ||echo %eeepc%, %%i, %date%>> Softing.csv

Edit

nochmal....

for /f "tokens=1,2 delims=;" %%a in (C:\script\tabellen\tabelle.txt) do if "%%b" == "" echo %%a hat keine Seriennummer
nenn das meinetwegen:
for /f "tokens=1,2 delims=;" %%a in (Beckhoff.csv) do if "%%b" == "" call Maineng %%a
/edit
Bitte warten ..
Mitglied: bastla
14.10.2011 um 12:36 Uhr
[OT]@Skye
kann mir bastla mal sein noch nicht vergebenes nicht anspruchsvoll bitte leihen ...
Er konnte ...

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 12:42 Uhr
ist doch doppelter Bullshit...
Ähm du Timo den doppelten Bullshit hast du mal geschrieben

if exist "\\%eeepc%\C$\TwinCAT\OPC\Server4\TcOPCCfg.exe" goto Beckhoffeng
if exist "\\%eeepc%\C$\Program Files\Softing\OPCTray\OPCTray.exe" (goto Softingeng) else (goto eof2)

Des goto eof2 hab ich drinne, falls der client keins von beiden hat. Sonst läuft der mir in Beckhoffeng und steht ne weile fest bis zum Time-out.

Die EEEPCs sind alle 32-Bit und werden auch 32 Bit bleiben von daher habe ich garnicht an x64 gedacht aber das mit dem Progra~1 ist auch noch ne gute Idee.
Also das Programm läuft soweit durch und gibt auch die richtigen Daten aus.

Klar überarbeiten lässt es sich aufjedenfall noch und auch kürzen aber für mich als leihen war es so logisch.

Die Kisten haben immer nur eins von beidem installiert da die Programme nicht gemeinsam auf einer Kiste laufen wollen.

Gruß
Schlumpf
Bitte warten ..
Mitglied: 60730
14.10.2011 um 13:13 Uhr
Zitat von ITSchlumpf:
>> ist doch doppelter Bullshit...
Ähm du Timo den doppelten Bullshit hast du mal geschrieben

tja - auch ich ...

In meinen Augen kann das ganze Ding so eingedampft werden.

Ist doch Jacke wie Hose, wie der Pfad heisst oder ob der vorhanden ist oder nicht - der ausgelesene Rekkey ist doch derselber und wenn er eh nix findet - schrebt er auch nix.
Warum du aber eine csv mit "wert"leerzeichen; "wert"leerzeichen; Datum befüllst...Änder das - wenn das wirklich sein muß - ich nutze immer wert;wert.

01.
:prepare
02.
Title RegEdit OPC
03.
move rechner.txt rechner.tmp
04.

05.
:start
06.
for /f "tokens=1,2 delims=;" %%a in (rechner.tmp) do ping -n 1 %%a |find "TTL" && call :Main1 %%a
07.
for /f "tokens=1,2 delims=;" %%a in (rechner.tmp) do ping -n 1 %%a |find "TTL" && call :Main2 %%a
08.
goto :eof
09.

10.
:Main1
11.
if exist "\\%1\C$\" (
12.
	Title RegEdit OPC %1 Softing.csv
13.
	sc \\%1 start RemoteRegistry
14.
	for /f "tokens=3" %%i in ('reg query "\\%1\HKLM\Software\Softing\License\22"^|findstr "lic"') do (
15.
		if not "%%i"=="" findstr /c:"%1" "Softing.csv" ||echo %1,%%i,%date%>> Softing.csv && findstr /i /v "%1" "rechner.tmp">rechner.txt
16.
		)
17.
	if exist rechner.txt  move rechner.txt rechner.tmp
18.
	sc \\%1 stop RemoteRegistry
19.
)
20.

21.
:Main2
22.

23.
if exist "\\%1\C$\" (
24.
	Title RegEdit OPC %1 Beckhoff.csv 
25.
	sc \\%1 start RemoteRegistry
26.
	for /f "tokens=3" %%i in ('reg query "\\%1\HKLM\Software\Beckhoff\TwinCAT OPC Server4\Common"^|findstr "Key"') do (
27.
		if not "%%i"==""  findstr /c:"%1" "Beckhoff.csv " ||echo %1,%%i,%date%>>Beckhoff.csv && findstr /i /v "%1" "rechner.tmp">rechner.txt
28.
		)
29.
	if exist rechner.txt  move rechner.txt rechner.tmp
30.
	sc \\%1 stop RemoteRegistry
31.
)

Auch der doppelte sc \\%1 stop RemoteRegistry ist mal "zur Sicherheit" drin geblieben - gefällt mir aber überhaupt nicht - Im Zweifel schadet der ohne Adminrechte eh nix und fährt einer die Kiste runter isser eh wieder aus... (Wenn er denn manuell gestartet werden muß)

Du mußt nur noch dafür sorgen, dass alle Kisten entweder in der einen, oder in der anderen csv stehen - du schreibst ja - einer von beiden kann nur installiert sein.
Eine Kiste, die bereits einen Wert eingetragen hat, kann ja in der anderen demzufplge nicht mehr drin sein.

Gruß

Edit
Ich hab das mal umgestrickt - die Rechner.txt wird im Step 1 umbenamst und in der ersten Schleife abgearbeitet - sollte die einen Erfolg liefert gibt es dann wieder eine rechner.txt (ohne den getroffenen Rechner) - die dann natürlich nicht mehr abgearbeitet wird.
Kann sein, dass ich dem Script dabei ein Bein gestellt habe.
Bitte warten ..
Mitglied: ITSchlumpf
14.10.2011 um 13:41 Uhr
Okay dankeschön. Dann teste ich das mal noch ne weile mit dem. Muss aber glaub noch das ein oder andere anpassen

Vielen dank nochmal

Gruß

Schlumpf
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Wort in Textdatei suchen
gelöst Frage von Nick.BBatch & Shell4 Kommentare

Ich wollte ein einzelnes Wort aus einer Textdatei suchen und als Variable speichern. Allerdings ist das Wort nicht das ...

Batch & Shell

Textdatei (.txt) Wort für Wort auslesen per batch (Spaltenweise)

Frage von pdiddoBatch & Shell1 Kommentar

Hi, ich habe eine Textdatei (.txt). Diese hat mehrere Zeilen. Ich möchte diese gerne Spalte für Spalte auslesen, sodass ...

Batch & Shell

Batch nach einem exaktem wort in einer textdatei suchen

gelöst Frage von noah1400Batch & Shell4 Kommentare

hallo ich möchte in einem text dokument nach dem wort "ha" suchen wenn in die Textdatei so aussieht 1: ...

Microsoft Office

Word bestimmt Sprache selbst

gelöst Frage von honeybeeMicrosoft Office1 Kommentar

Hallo, habe in Word 2016 ein nerviges Problem: Auf meinem Computer (Windows 10) sind zwei Sprachen installiert: Deutsch und ...

Neue Wissensbeiträge
Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Tipp von ChriBo vor 1 TagFirewall1 Kommentar

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 2 TagenInternet1 Kommentar

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

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 2 TagenGoogle 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 2 TagenGoogle Android2 Kommentare

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

Heiß diskutierte Inhalte
Linux Userverwaltung
LogIn Versuche beschränken auf EINEN Versuch
gelöst Frage von GarroshLinux Userverwaltung23 Kommentare

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

Backup
Wo installiert man Veeam bei SoHo?
Frage von EDVMan27Backup14 Kommentare

Hallo, nachdem ich die neue Veeam CE bei mir getestet habe, wollte ich es einmal bei einem Kunden testen. ...

Ubuntu
Exchange Alternative auf Ubuntu
Frage von TELLOUbuntu11 Kommentare

Hi NG, wir müssen für unsere Kleine Firma (5 User) das Email / Kalendersystem neu einrichten. Ich könnte jetzt ...

Batch & Shell
Tasklist überprüfen
Frage von IleiesBatch & Shell10 Kommentare

Hallo zusammen, Wie kann ich in Batch überprüfen, ob gerade der Prozess "Skype.exe" ausgeführt wird? Also nicht so dass ...