davidl
Goto Top

String Formatierung in Batch Datei

Ich möchte mittels Batch einige Programme auf allen PCs im Netzwerk ausführen, mach ich mit PSexec, haut auch hin.

Derzeit PING ich die PCs alle noch einmal, damit er nicht erst versucht, auf Offline-PCs zu arbeiten.
Dieser 1 sek. lange PING ist mir auch noch zu lang(bei einigen 100 PCs), drum hab ich mit net view alle PCs anzeigen lassen, und das drumherum schon mal weg geschmissen.

echo.
net view >> NETLIST2.txt
FINDSTR \\ NETLIST2.txt >> NETLIST.txt
PAUSE


Ergebnis:

\\PC1
\\PC2
\\PC3
...


und diese 2 \\ will ich auch noch weg kriegen, damit ich dann eine Liste

PC1
PC2
PC3

hab, und auf die gleich ohne pingen (oder vl doch noch mal vorsorglich pingen) zugreifen kann

Darum, wie les ich aus der Datei die Zeilen aus, mach die ersten zwei Symbole weg und schreib das in ne neue Datei.

So etwa hab ichs mir vorgestellt,

for /f %%I in (netlist.txt) do (
set %%I = %I:~2,10%
echo %%I >> netlist.txt
)


bring ich aber nicht zusammen

Content-ID: 125274

Url: https://administrator.de/contentid/125274

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

ralfkausk
ralfkausk 18.09.2009 um 12:48:28 Uhr
Goto Top
also, ich wurde die unix-tools nehmen
das sind programme aus dem unix bereich die auf windows portiert wurden
die programme sind freeware, meiner meining nach wesentlich benutzerfreundlicher und maechtiger als windows bordmittel

aus der sammlung brauchst du:
cat und sed

cat NETLIST2.txt|sed s/\\\\// > NETLIST.txt

hab das gerade ausprobiert, dunktioniert wunderbar
60730
60730 18.09.2009 um 13:01:37 Uhr
Goto Top
Servus,

ich versteh nicht so ganz - wo das Problem liegt. - bzw. sehe ein anders Problem..

Hat der Rechner eine Beschreibung - taucht die in der Netlist auch auf.

Anstatt die For Schleife für das filtern der netlist zu nehmen - würde ich - wenn schon - die for Schleife für das Psexec nehmen.

Denn Psexec - will wiederum den führenden \\ haben.

Aber selbst bei "meinen" deutlich mehr als 100 Clients - nehme ich ein "führendes" if exist computer\c$

- denn weder das erfolgreiche Pingen oder das die Kiste in einem Netzwerk Cache noch gelistet wird - hat nix zu bedeuten.

gruß
60730
60730 18.09.2009 um 13:19:00 Uhr
Goto Top
?

nun hab ich mir ein Herz genommen und meinen "sonst üblichen" Bauer Stall Hallo Spruch - verkniffen.

Und nun ist das Problem kommentarlos gelöst?

schade, das wir nun alle die Kristallkugel wieder aus dem Picknickkoffer nehmen müssen - um zu raten - welches der beiden Schweine nun das 5 Mark Stückerl bekommen hat...
davidl
davidl 18.09.2009 um 13:21:44 Uhr
Goto Top
unix tools haben den zuschlagh bekommen


bin grad fertig mit dem ausprobieren, hat gegeht, danke
ralfkausk
ralfkausk 18.09.2009 um 13:31:26 Uhr
Goto Top
gute entscheidung ;)

noch 'ne kleine Hilfe
Falls ein rechner tatsaechlich eine Beschreibung haben sollte, kannst Du diese mit dem zusaetzlichen Befehl cut entfernen

cat test3.txt|sed s/\\\\//|cut -d" " -f1

P.S.
fast jedes Programm der Sammlung bietet dir eine Hilfe an
z.B. cut --help
60730
60730 18.09.2009 um 13:35:13 Uhr
Goto Top
Zitat von @ralfkausk:
gute entscheidung ;)

sagt / schreibt wer?

Schonmal einen Rechner heruntergefahren und 1 minute später net view laufen lassen?

Auf welchen Rechner überhaupt - dem DNS?

Sorry - aber vielleicht bin ich wirklich auf dem Holzweg....
bastla
bastla 18.09.2009 um 13:50:28 Uhr
Goto Top
Hallo an Alle!

Nur der Vollständigkeit halber (und ohne "net view" zu hinterfragen face-wink) die Variante ohne Zusatztools:
for /f "delims=\" %%i in ('net view^|findstr "\\\\"') do echo %%i  
Grüße
bastla

P.S.: Pingen sollte für "psexec" eigentlich nicht nötig sein (siehe "-n") ...
60730
60730 18.09.2009 um 18:37:01 Uhr
Goto Top
Zitat von @bastla:
Hallo an Alle!

Servus bastla,

Nur der Vollständigkeit halber (und ohne "net view" zu hinterfragen face-wink) die Variante ohne Zusatztools:
for /f "delims=\" %%i in ('net view^|findstr "\\\\"') do echo %%i   

genau das ist es, was ich am Administrator Forum so sehr schätze.
Egal, wie - jedes (ordentlich geschildertes) Problem wird hier ordentlich gelöst.

Grüße
bastla

P.S.: Pingen sollte für "psexec" eigentlich nicht nötig sein (siehe "-n") ...
Pss: Ich vermute mal, wenn es nicht der gewaltige Zeitbedarf vom Ping gewesen wäre - irgendwoher (Anleitung /proof of Concept/ Softwareverteilung via Psesex?) hat jemand herausbekommen, das eine Computerliste fürs Psexec gebraucht wird.

Gruß
Biber
Biber 18.09.2009 um 18:45:20 Uhr
Goto Top
A propos proof-of-concept....

bei mir am CMD-Prompt klappt neben der Backslash-Verdoppelungsvariante auch ein
for /f "delims=\" %i in ('net view^|findstr /C:"\\"') do @echo %i

Mein ja nur.... da hab ich nicht so viele Nachfragen von meinen blutjungen rothaarigen Praktikantinnen...

Schönes Wochenende
Biber
bastla
bastla 18.09.2009 um 18:52:42 Uhr
Goto Top
@Biber
Mit "\\\\" schaut's einfach interessanter aus face-wink (aber das Suchen nach nur einem "\" in der Zeile sollte für diesen Fall natürlich auch genügen) ...

Auch Dir ein schönes Wochenende
bastla

P.S.:
... da hab ich nicht so viele Nachfragen von meinen blutjungen rothaarigen Praktikantinnen...
Wie, Du magst mit denen nicht (über Batches) reden? face-wink
Biber
Biber 18.09.2009 um 19:06:19 Uhr
Goto Top
@bastla

Meine blutjungen rothaarigen Praktikantinnen waren schon heute vormittag fieberhaft am Suchen nach den Zeilen "Call :buddies %*" , "goto :Weekend" und "Exit"

Die kann ich Freitags für Deine schrägen Lösungen nicht so recht begeistern. face-wink

Schönes Wochenende auch Dir!
Biber
P.S. Und natürlich auch allen Nicht-Blutjungen und Nicht-Rothaarigen.
bastla
bastla 18.09.2009 um 19:17:25 Uhr
Goto Top
@Biber
Ich muss zugeben, "\\\\" ist tatsächlich (schon rein optisch) etwas schräg ... face-wink

Grüße
bastla