Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

2 x zeile für zeile vars aus txt auslesen und weiterverwenden

Frage Entwicklung Batch & Shell

Mitglied: flash-gordon

flash-gordon (Level 1) - Jetzt verbinden

05.07.2009, aktualisiert 06.07.2009, 4464 Aufrufe, 18 Kommentare

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:

01.
lpt1 
02.
lpt2 
03.
lpt3 
04.
lpt4 
05.
...

Hier mein bisheriger code:

01.
::---txt für vars--- 
02.
SET usr=C:\prog\checkLPT\log\user_names.txt 
03.
SET lpt=C:\prog\checkLPT\log\laptop_names.txt 
04.
 
05.
 
06.
::---create path with usernames--- 
07.
set /a num=0 
08.
 
09.
for /F "delims=" %%a in (%usr%) do call :ausgabe %%a 
10.
 
11.
echo. 
12.
echo Anzeige der erzeugten Variablen: 
13.
set v 
14.
 
15.
goto :eof 
16.
 
17.
:ausgabe 
18.
set /a num=%num%+1 
19.
echo \\Server\%1\profile\%2.pfx >>log\pfxPfade.txt 
20.
set var%num%=%1 
21.
 
22.
 
23.
::---prüfen ob datei vorhanden ist 
24.
if exist "\\Server\%1\profile\%2.pfx" goto OK 
25.
if not exist "\\Server\%1\profile\%2.pfx" goto NOK 
26.
:OK  
27.
echo %1;OK >>"C:\prog\checkLPT\log\pfx.txt" 
28.
goto END 
29.
 
30.
:NOK  
31.
echo %1;NOK >>"C:\prog\checkLPT\log\pfx.txt" 
32.
goto END 
33.
 
34.
:END

Dieses Script gibt folgendes in "pfxPfade.txt" aus:

01.
\\Server\wkern26\profile\.pfx  
02.
\\Server\pjanz15\profile\.pfx  
03.
\\Server\mhaber02\profile\.pfx 
und in "pfx.txt":

01.
wkern26;NOK  
02.
pjanz15;NOK  
03.
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
Mitglied: rubberman
05.07.2009 um 23:16 Uhr
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.) ?
Bitte warten ..
Mitglied: flash-gordon
05.07.2009 um 23:18 Uhr
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!

Mit freundlichen Grüßen
flasg
Bitte warten ..
Mitglied: rubberman
05.07.2009 um 23:40 Uhr
ungefähr so (ungetestet):
01.
@echo off &setlocal enabledelayedexpansion 
02.
::---txt für vars--- 
03.
SET usr=C:\prog\checkLPT\log\user_names.txt 
04.
SET lpt=C:\prog\checkLPT\log\laptop_names.txt 
05.
::---create path with usernames--- 
06.
for /F "delims=: tokens=1,*" %%a in ('type %usr%^|findstr /n .') do call :sub1 %%a %%b 
07.
echo. 
08.
echo Anzeige der erzeugten Variablen: 
09.
set v 
10.
 
11.
goto :eof 
12.
 
13.
:sub1 
14.
set /a num=%1 
15.
set var%num%=%2 
16.
 
17.
for /F "delims=: tokens=1,*" %%a in ('type %lpt%^|findstr /n .') do call :sub2 %%a %%b  
18.
goto :eof 
19.
 
20.
:sub2 
21.
::---prüfen ob datei vorhanden ist 
22.
if %1==%num% ( 
23.
echo \\Server\!var%num%!\profile\%2.pfx >>log\pfxPfade.txt 
24.
if exist "\\Server\!var%num%!\profile\%2.pfx" (goto OK) else goto NOK 
25.
:OK  
26.
echo %1;OK >>"C:\prog\checkLPT\log\pfx.txt" 
27.
goto :eof 
28.
 
29.
:NOK  
30.
echo %1;NOK >>"C:\prog\checkLPT\log\pfx.txt" 
31.
goto :eof 
32.
)
<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>
Bitte warten ..
Mitglied: flash-gordon
05.07.2009 um 23:49 Uhr
In diesem Bereich:
01.
::---create path with usernames--- 
02.
for /F "delims=: tokens1,*" %%a in ('type %usr%^|findstr /n .') do call :sub1 %%a %%b 
03.
echo. 
04.
echo Anzeige der erzeugten Variablen: 
05.
set v
bekomme ich ein:
01.
tokens1,*" was unexpected at this time. 
02.
 
03.
Anzeige der erzeugten Variablen: 
04.
Environment variable v not defined
dann bricht das script ab!

Mit freundlichen Grüßen
Flash
Bitte warten ..
Mitglied: rubberman
05.07.2009 um 23:56 Uhr
Ja sorry. muss natürlich tokens=1,* heißen (in beiden FOR Schleifen)
Bitte warten ..
Mitglied: 80220
06.07.2009 um 00:04 Uhr
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.
Bitte warten ..
Mitglied: flash-gordon
06.07.2009 um 00:08 Uhr
01.
@echo off &setlocal enabledelayedextension 
02.
::---txt für vars--- 
03.
SET usr=C:\prog\checkLPT\log\user_names.txt 
04.
SET lpt=C:\prog\checkLPT\log\laptop_names.txt 
05.
::---create path with usernames--- 
06.
for /F "delims=: tokens=1,*" %%a in ('type %usr%^|findstr /n .') do call :sub1 %%a %%b 
07.
echo. 
08.
echo Anzeige der erzeugten Variablen: 
09.
set v 
10.
 
11.
goto :eof 
12.
 
13.
:sub1 
14.
set /a num=%1 
15.
set var%num%=%2 
16.
 
17.
for /F "delims=: tokens=1,*" %%a in ('type %lpt%^|findstr /n .') do call :sub2 %%a %%b  
18.
goto :eof 
19.
 
20.
:sub2 
21.
::---prüfen ob datei vorhanden ist 
22.
if %1==%num% ( 
23.
echo \\Server\!var%num%!\profile\%2.pfx >>log\pfxPfade.txt 
24.
if exist "\\Server\!var%num%!\profile\%2.pfx" (goto OK) else goto NOK 
25.
:OK  
26.
echo %1;OK >>"C:\prog\checkLPT\log\pfx.txt" 
27.
goto :eof 
28.
 
29.
:NOK  
30.
echo %1;NOK >>"C:\prog\checkLPT\log\pfx.txt" 
31.
goto :eof 
32.
)
liefert

01.
\\Server\!var1!\profile\lpt02.pfx  
02.
\\Server\!var2!\profile\lpt03.pfx  
03.
\\Server\!var3!\profile\lpt04.pfx  
04.
\\Server\!var4!\profile\lpt05.pfx  
05.
\\Server\!var5!\profile\lpt06.pfx  
06.
\\Server\!var6!\profile\lpt07.pfx  
07.
\\Server\!var7!\profile\lpt08.pfx  
08.
\\Server\!var1!\profile\lpt02.pfx  
09.
\\Server\!var2!\profile\lpt03.pfx  
10.
\\Server\!var3!\profile\lpt04.pfx  
11.
\\Server\!var4!\profile\lpt05.pfx  
12.
\\Server\!var5!\profile\lpt06.pfx  
13.
\\Server\!var6!\profile\lpt07.pfx  
14.
\\Server\!var7!\profile\lpt08.pfx 
in "pfxPfade.txt"
Bitte warten ..
Mitglied: rubberman
06.07.2009 um 00:10 Uhr
Das war flash-gordon bewusst (siehe 2. Zeile des ersten Posts).
Bitte warten ..
Mitglied: 80220
06.07.2009 um 00:14 Uhr
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.
Bitte warten ..
Mitglied: rubberman
06.07.2009 um 00:16 Uhr
ist schon spät (früh )
erste Zeile:
@echo off &setlocal enabledelayedexpansion
Bitte warten ..
Mitglied: flash-gordon
06.07.2009 um 00:16 Uhr
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.
Bitte warten ..
Mitglied: 80220
06.07.2009 um 00:18 Uhr
Du kannst für %2 nichts erzeugen. Du kannst nur an einen Batch oder eine Subroutine einen 2. (oder auch weitere) Parameter übergeben.
Bitte warten ..
Mitglied: flash-gordon
06.07.2009 um 00:20 Uhr
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?
Bitte warten ..
Mitglied: rubberman
06.07.2009 um 00:21 Uhr
jo. nun schau mal mein Post von 00:16:52. schätze damit sollte das Prob beseitigt sein
Bitte warten ..
Mitglied: 80220
06.07.2009 um 00:22 Uhr
Hast du doch inzwischen bereits.

Deine Zeile 6
01.
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
Bitte warten ..
Mitglied: flash-gordon
06.07.2009 um 00:25 Uhr
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:

01.
\\Server\!var1!\profile\lpt02.pfx  
02.
\\Server\!var2!\profile\lpt03.pfx  
03.
\\Server\!var3!\profile\lpt04.pfx  
04.
\\Server\!var4!\profile\lpt05.pfx  
05.
\\Server\!var5!\profile\lpt06.pfx  
06.
\\Server\!var6!\profile\lpt07.pfx  
07.
\\Server\!var7!\profile\lpt08.pfx  
08.
\\Server\!var1!\profile\lpt02.pfx  
09.
\\Server\!var2!\profile\lpt03.pfx  
10.
\\Server\!var3!\profile\lpt04.pfx  
11.
\\Server\!var4!\profile\lpt05.pfx  
12.
\\Server\!var5!\profile\lpt06.pfx  
13.
\\Server\!var6!\profile\lpt07.pfx  
14.
\\Server\!var7!\profile\lpt08.pfx 
Bitte warten ..
Mitglied: rubberman
06.07.2009 um 00:27 Uhr
Nee, mit dieser Zeile ersetzen!
@echo off &setlocal enabledelayedexpansion
Bitte warten ..
Mitglied: flash-gordon
06.07.2009 um 00:44 Uhr
Zitat von rubberman:
Nee, mit dieser Zeile ersetzen!
@echo off &setlocal enabledelayedexpansion

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

1000 Dank!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...