flash-gordon
Goto Top

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! face-sad

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

Content-Key: 119770

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

Printed on: April 25, 2024 at 00:04 o'clock

Member: rubberman
rubberman Jul 05, 2009 at 21:16:32 (UTC)
Goto Top
Frage 1:
Du suchst nach lpt1.pfx usw. ?

Frage 2:
Arbeitet wkern26 immer an lpt1 (ist der erste Wert der einen Datei immer dem ersten Wert der anderen Datei zugeordnet usw.) ?
Member: flash-gordon
flash-gordon Jul 05, 2009 at 21:18:20 (UTC)
Goto Top
Zitat von @rubberman:
Frage 1:
Du suchst nach lpt1.pfx usw. ?

Frage 2:
Arbeitet wkern26 immer an lpt1 (ist der erste Wert der einen Datei
immer dem ersten Wert der anderen Datei zugeordnet usw.) ?

Hallo!
zu1: ja ich möchte "lpt1.pfx" usw....

zu 2: Ja, wkern26 arbeitet immer an lpt1!
Der erste Wert aus der einen Datei ist IMMER dem ersten der anderen zugeordnet!

MfG
flasg
Member: rubberman
rubberman Jul 05, 2009 at 21:40:43 (UTC)
Goto Top
ungefähr so (ungetestet):
@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>
Member: flash-gordon
flash-gordon Jul 05, 2009 at 21:49:16 (UTC)
Goto Top
In diesem Bereich:
::---create path with usernames---
for /F "delims=: tokens1,*" %%a in ('type %usr%^|findstr /n .') do call :sub1 %%a %%b  
echo.
echo Anzeige der erzeugten Variablen:
set v

bekomme ich ein:
tokens1,*" was unexpected at this time.  

Anzeige der erzeugten Variablen:
Environment variable v not defined

dann bricht das script ab!

MfG
Flash
Member: rubberman
rubberman Jul 05, 2009 at 21:56:40 (UTC)
Goto Top
Ja sorry. muss natürlich tokens=1,* heißen (in beiden FOR Schleifen)
Mitglied: 80220
80220 Jul 05, 2009 at 22:04:40 (UTC)
Goto Top
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.
Member: flash-gordon
flash-gordon Jul 05, 2009 at 22:08:06 (UTC)
Goto Top
@echo off &setlocal enabledelayedextension
::---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
)

liefert

\\Server\!var1!\profile\lpt02.pfx 
\\Server\!var2!\profile\lpt03.pfx 
\\Server\!var3!\profile\lpt04.pfx 
\\Server\!var4!\profile\lpt05.pfx 
\\Server\!var5!\profile\lpt06.pfx 
\\Server\!var6!\profile\lpt07.pfx 
\\Server\!var7!\profile\lpt08.pfx 
\\Server\!var1!\profile\lpt02.pfx 
\\Server\!var2!\profile\lpt03.pfx 
\\Server\!var3!\profile\lpt04.pfx 
\\Server\!var4!\profile\lpt05.pfx 
\\Server\!var5!\profile\lpt06.pfx 
\\Server\!var6!\profile\lpt07.pfx 
\\Server\!var7!\profile\lpt08.pfx 

in "pfxPfade.txt" face-sad
Member: rubberman
rubberman Jul 05, 2009 at 22:10:19 (UTC)
Goto Top
Das war flash-gordon bewusst (siehe 2. Zeile des ersten Posts).
Mitglied: 80220
80220 Jul 05, 2009 at 22:14:50 (UTC)
Goto Top
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.
Member: rubberman
rubberman Jul 05, 2009 at 22:16:52 (UTC)
Goto Top
ist schon spät (früh face-smile )
erste Zeile:
@echo off &setlocal enabledelayedexpansion
Member: flash-gordon
flash-gordon Jul 05, 2009 at 22:16:53 (UTC)
Goto Top
Zitat von @80220:
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.


Weil mir nicht einleuchten will wie ich für %2 etwas erzeuge, fragte ich ja!

Und....ich meinte natürlich %2. -da hat mich rubberman schon richtig verstanden.
Mitglied: 80220
80220 Jul 05, 2009 at 22:18:20 (UTC)
Goto Top
Du kannst für %2 nichts erzeugen. Du kannst nur an einen Batch oder eine Subroutine einen 2. (oder auch weitere) Parameter übergeben.
Member: flash-gordon
flash-gordon Jul 05, 2009 at 22:20:21 (UTC)
Goto Top
Zitat von @80220:
Du kannst für %2 nichts erzeugen. Du kannst nur an einen
Batch oder eine Subroutine einen 2. (oder auch weitere) Parameter
übergeben.

Oder so....trotzdem weiss ich net wie ich das hinbekomme.
Kannst du mir da helfen?
Member: rubberman
rubberman Jul 05, 2009 at 22:21:27 (UTC)
Goto Top
jo. nun schau mal mein Post von 00:16:52. schätze damit sollte das Prob beseitigt sein
Mitglied: 80220
80220 Jul 05, 2009 at 22:22:41 (UTC)
Goto Top
Hast du doch inzwischen bereits.

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
Member: flash-gordon
flash-gordon Jul 05, 2009 at 22:25:32 (UTC)
Goto Top
Zitat von @rubberman:
jo. nun schau mal mein Post von 00:16:52. schätze damit sollte
das Prob beseitigt sein
Leider nicht. Ob ich die erste Zeile drin lasse, oder nicht.....
Ergebnis in "pfxPfade.txt"" ist immer:

\\Server\!var1!\profile\lpt02.pfx 
\\Server\!var2!\profile\lpt03.pfx 
\\Server\!var3!\profile\lpt04.pfx 
\\Server\!var4!\profile\lpt05.pfx 
\\Server\!var5!\profile\lpt06.pfx 
\\Server\!var6!\profile\lpt07.pfx 
\\Server\!var7!\profile\lpt08.pfx 
\\Server\!var1!\profile\lpt02.pfx 
\\Server\!var2!\profile\lpt03.pfx 
\\Server\!var3!\profile\lpt04.pfx 
\\Server\!var4!\profile\lpt05.pfx 
\\Server\!var5!\profile\lpt06.pfx 
\\Server\!var6!\profile\lpt07.pfx 
\\Server\!var7!\profile\lpt08.pfx 
Member: rubberman
rubberman Jul 05, 2009 at 22:27:09 (UTC)
Goto Top
Nee, mit dieser Zeile ersetzen!
@echo off &setlocal enabledelayedexpansion
Member: flash-gordon
flash-gordon Jul 05, 2009 at 22:44:54 (UTC)
Goto Top
Zitat von @rubberman:
Nee, mit dieser Zeile ersetzen!
@echo off &setlocal enabledelayedexpansion

oh mann!!!
läuft!!!!!

1000 Dank!