ne0trace
Goto Top

Schriftarten auf Existenz ueberpruefen

Hallo,
ich habe eine Batchfile geschrieben die aus einer Textdatei (test.txt) die Rechnernamen auslesen soll und daraufhin aus einer Liste (fonts.txt) die Existenz dieser Fonts zu bestätigen. Leider bekomme ich eine Fehlermeldung die da lautet "\\%f\c$\windows\fonts\%i" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Leider bin ich mir gar nicht sicher ob so eine doppelte FOR Struktur überhaupt geht. Hat jemand vielleicht eine Idee warum mein untenstehender Code nicht funktioniert?
@echo off
FOR /f %%f IN (test.txt) DO (
FOR /f %%i IN (font.txt) DO (
		if exists \\%%f\c$\windows\fonts\%%i (echo %%i ist installiert)
		)
	)
)

Danke
Felix

Content-Key: 89651

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

Printed on: April 23, 2024 at 19:04 o'clock

Member: miniversum
miniversum Jun 11, 2008 at 18:55:32 (UTC)
Goto Top
Verschachtelte For Schleifen gehen.
Wenn du die nötigen Rechte hast sollte das so auch funktionieren. Was vielleicht das Problem sein könnte ist, das du bis zum echo 3 Klammern öffnest, danach aber 4 schließt.
Member: ne0trace
ne0trace Jun 11, 2008 at 19:06:21 (UTC)
Goto Top
Hallo miniversum,
ich habe die Klammern korrigiert. Leider ist das Ergebnis noch das Gleiche. Die Rechte sind auch nicht das Problem (lokale Adminrechte+Netzwerkadmin).

Gruß Felix
Member: Biber
Biber Jun 11, 2008 at 19:10:03 (UTC)
Goto Top
Moin ne0trace,

alternativ könntest Du das "if exists ..." in ein "if exist ..." ändern... face-wink

Grüße
Biber
Member: miniversum
miniversum Jun 11, 2008 at 19:22:01 (UTC)
Goto Top
Ach jetzt seh ichs auch. hätte mir auch auffallen können...
Das kommt wohl davon wenn man nicht ganz bei der Sache ist und imemr nur an das eien denkt * zu ofen rüberschieft udn wartet bin ENDLICH die Pizza fertig ist *
Member: ne0trace
ne0trace Jun 12, 2008 at 12:23:13 (UTC)
Goto Top
Oh sehr cool und vielen Dank. Immer diese gramatikalischen Fehler...

Jetzt habe ich noch einen 2. Fehler in dem Script entdeckt. Leider meint er auch gewisse Schriftarten nicht zu finden wenn der Rechner aus ist. Kann man eine Überprüfung durch einen Ping vorn anstellen?
Hat da jemand eine Idee?


Ich poste hier mal den letzten Stand:

@echo off
FOR /f %%f IN (AlleRechner.txt) DO (
FOR /f %%i IN (font.txt) DO (
if not exist \\%%f\c$\windows\fonts\%%i (echo %%i ist nicht installiert)
)
)

Danke Felix
Member: miniversum
miniversum Jun 12, 2008 at 17:55:34 (UTC)
Goto Top
Ja das geht so:
@echo off
FOR /f %%f IN (AlleRechner.txt) DO (
FOR /f %%i IN (font.txt) DO (
ping  -n 1 -w 1 %%f >NUL
if %errorlevel% == 1 goto:PCAus
if not exist \\%%f\c$\windows\fonts\%%i (echo %%i ist nicht installiert)
:PCAus
)
)
Member: Biber
Biber Jun 12, 2008 at 19:27:05 (UTC)
Goto Top
@miniversum

auch wenn es für die psychische Gesunderhaltung natürlich förderlich ist, einen wehrlosen Batch zu schreiben, der alles macht, was du ihm vorgibst...

Quäl ihn doch so und vertausche die Zeilen 3 und 4...
Er muss doch wirklich nur einmal pro Rechner dessen Da-Sein überprüfen und nicht bei jeder der 174 *.fnt-Dateien... face-wink

Is' doch auch nur ein armer Batch, der seinen Job machen will.

Grüße
Biber
Member: miniversum
miniversum Jun 12, 2008 at 19:39:43 (UTC)
Goto Top
Da war ich woll in meinem jugendlichen leichtsinn etwas "übereifrig". Ok ich bin ja ncith imemr gemein zu den Batches...
Aber wenn tausche ich die Zeile 5 auch noch gleich mit.
@echo off
FOR /f %%f IN (AlleRechner.txt) DO (
ping  -n 1 -w 1 %%f >NUL
if %errorlevel% == 1 goto:PCAus
FOR /f %%i IN (font.txt) DO (
if not exist \\%%f\c$\windows\fonts\%%i (echo %%i ist nicht installiert)
)
:PCAus
)
Member: Biber
Biber Jun 12, 2008 at 20:10:59 (UTC)
Goto Top
@miniversum

...nicht hauen jezz', aber...
...
if %errorlevel% == 1 goto:PCAus 
...
...wird innerhalb EINER CMD-Zeile nicht funktionieren, auch wenn die Zeile optisch auf DIN A4 Hochkant gezogen wird.

Wollen wir da ein ..
...
if errorlevel 1 goto:PCAus 
...
...draus machen?
Habe ich aber auch eben erst gesehen- - soweit hatte ich noch nicht gelesen...

Grüße
Biber
Member: ne0trace
ne0trace Jun 13, 2008 at 10:44:51 (UTC)
Goto Top
Hey,
ok ich habe jetzt eure wunderschönen Verbesserungen und Korrekturen eingebaut/umgebaut. Leider bekomme ich jetzt folgende Meldung:

")" ist syntaktisch an dieser Stelle nicht verarbeitbar.


Dies ist mein Code:

rem @echo off
FOR /f %%f IN (AlleRechner.txt) DO (
ping -n 1 -w 1 %%f >NUL
if errorlevel 1 goto :exit
FOR /f %%i IN (font.txt) DO (
if not exist \\%%f\c$\windows\fonts\%%i (echo %%i ist nicht installiert)
)
:exit
)

Gruß Felix
Member: miniversum
miniversum Jun 13, 2008 at 14:55:33 (UTC)
Goto Top
@Biber
Also ich verwende das in einer Batch von mir so und da Funktionierts eigentlich bischer immer.

@ne0trace
Versuchs mal so:
rem @echo off
FOR /f %%f IN (AlleRechner.txt) DO (
ping -n 1 -w 1 %%f >NUL && (
FOR /f %%i IN (font.txt) DO (
if not exist \\%%f\c$\windows\fonts\%%i (echo %%i ist nicht installiert)
)
)
)
Member: ne0trace
ne0trace Jun 16, 2008 at 12:05:58 (UTC)
Goto Top
Wow das wars... Leider kann ich jetzt meine Idee dahinter immer noch nicht überprüfen da alle Maschinen gerade aus sind. ;)

Aber auf jeden Fall mal 1000x Dank für eure Hilfe...

Gruß felix