2 x zeile für zeile vars aus txt auslesen und weiterverwenden
Hallo zusammen!
Hab das Forum auf den Kopf gestellt und ich bin mir ziemlich sicher dass das was ich brauche vermutlich ein Kinderspiel ist....aber ich komm einfach net drauf!
Also...ich habe schon einiges das funktioniert!
Ich möchte jetzt aber noch "%2 mit den Variablen füllen lassen! Weiss aber net wie!
In C:\prog\checkLPT\log\laptop_names.txt steht folgendes:
Hier mein bisheriger code:
Dieses Script gibt folgendes in "pfxPfade.txt" aus:
und in "pfx.txt":
Das in "pfx.txt" immer NOK steht ist klar, da er das Vorhandensein aufgrund der fehlenden VAR %2 nicht finden kann!
Dank vorab für sachdienlichen Hinweise!
Gruß
Flash
Hab das Forum auf den Kopf gestellt und ich bin mir ziemlich sicher dass das was ich brauche vermutlich ein Kinderspiel ist....aber ich komm einfach net drauf!
Also...ich habe schon einiges das funktioniert!
Ich möchte jetzt aber noch "%2 mit den Variablen füllen lassen! Weiss aber net wie!
In C:\prog\checkLPT\log\laptop_names.txt steht folgendes:
lpt1
lpt2
lpt3
lpt4
...
Hier mein bisheriger code:
::---txt für vars---
SET usr=C:\prog\checkLPT\log\user_names.txt
SET lpt=C:\prog\checkLPT\log\laptop_names.txt
::---create path with usernames---
set /a num=0
for /F "delims=" %%a in (%usr%) do call :ausgabe %%a
echo.
echo Anzeige der erzeugten Variablen:
set v
goto :eof
:ausgabe
set /a num=%num%+1
echo \\Server\%1\profile\%2.pfx >>log\pfxPfade.txt
set var%num%=%1
::---prüfen ob datei vorhanden ist
if exist "\\Server\%1\profile\%2.pfx" goto OK
if not exist "\\Server\%1\profile\%2.pfx" goto NOK
:OK
echo %1;OK >>"C:\prog\checkLPT\log\pfx.txt"
goto END
:NOK
echo %1;NOK >>"C:\prog\checkLPT\log\pfx.txt"
goto END
:END
Dieses Script gibt folgendes in "pfxPfade.txt" aus:
\\Server\wkern26\profile\.pfx
\\Server\pjanz15\profile\.pfx
\\Server\mhaber02\profile\.pfx
und in "pfx.txt":
wkern26;NOK
pjanz15;NOK
mhaber02;NOK
Das in "pfx.txt" immer NOK steht ist klar, da er das Vorhandensein aufgrund der fehlenden VAR %2 nicht finden kann!
Dank vorab für sachdienlichen Hinweise!
Gruß
Flash
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 119770
Url: https://administrator.de/forum/2-x-zeile-fuer-zeile-vars-aus-txt-auslesen-und-weiterverwenden-119770.html
Ausgedruckt am: 24.01.2025 um 19:01 Uhr
18 Kommentare
Neuester Kommentar
ungefähr so (ungetestet):
<edit> Der Anregung von dumdideldum folgend: Fehler in der 1., 6. und 17. Zeile korrigiert. Für die Zeilen 7-9 kenne ich den ursprünglichen Sinn nicht. Sind eigentlich irrelevant. </edit>
@echo off &setlocal enabledelayedexpansion
::---txt für vars---
SET usr=C:\prog\checkLPT\log\user_names.txt
SET lpt=C:\prog\checkLPT\log\laptop_names.txt
::---create path with usernames---
for /F "delims=: tokens=1,*" %%a in ('type %usr%^|findstr /n .') do call :sub1 %%a %%b
echo.
echo Anzeige der erzeugten Variablen:
set v
goto :eof
:sub1
set /a num=%1
set var%num%=%2
for /F "delims=: tokens=1,*" %%a in ('type %lpt%^|findstr /n .') do call :sub2 %%a %%b
goto :eof
:sub2
::---prüfen ob datei vorhanden ist
if %1==%num% (
echo \\Server\!var%num%!\profile\%2.pfx >>log\pfxPfade.txt
if exist "\\Server\!var%num%!\profile\%2.pfx" (goto OK) else goto NOK
:OK
echo %1;OK >>"C:\prog\checkLPT\log\pfx.txt"
goto :eof
:NOK
echo %1;NOK >>"C:\prog\checkLPT\log\pfx.txt"
goto :eof
)
<edit> Der Anregung von dumdideldum folgend: Fehler in der 1., 6. und 17. Zeile korrigiert. Für die Zeilen 7-9 kenne ich den ursprünglichen Sinn nicht. Sind eigentlich irrelevant. </edit>
Die Tatsache, dass das Script für %2 nichts erzeugt, lässt darauf schließen, dass %2 nicht definiert ist.
Numerische Variablen %1 bis %n (n steht für eine Zahl) sind an das Script bzw. die Subroutine übergebene Parameter.
Numerische Variablen %1 bis %n (n steht für eine Zahl) sind an das Script bzw. die Subroutine übergebene Parameter.
Wenn ihm das bewusst gewesen wäre, hätte er es überprüfen können. Außerdem steht in Zeile 2 %2%, und %2% gibt es nicht.
Du kannst für %2 nichts erzeugen. Du kannst nur an einen Batch oder eine Subroutine einen 2. (oder auch weitere) Parameter übergeben.
Hast du doch inzwischen bereits.
Deine Zeile 6
übergibt 2 Parameter an die Subroutine sub1. Darin wird %%a zu %1 und %%b zu %2
Deine Zeile 6
for /F "delims=: tokens=1,*" %%a in ('type %usr%^|findstr /n .') do call :sub1 %%a %%b
übergibt 2 Parameter an die Subroutine sub1. Darin wird %%a zu %1 und %%b zu %2