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

For do if - Auslesen des 2. Eintrages in einer Textdatei scheitert

Frage Entwicklung Batch & Shell

Mitglied: Tom-Jan

Tom-Jan (Level 1) - Jetzt verbinden

04.05.2009, aktualisiert 10:52 Uhr, 3516 Aufrufe, 6 Kommentare

Hallo liebe Forenuser,

normalerweise gehöre ich hier eher zur lesenden Fraktion und bis jetzt konnten auch alle meine Fragen über die SuFu oder die Guides gelöst werden. Aber bei meinem aktuellen Problem scheine ich blind zu sein und benötige eure Hilfe bzw. Augen.

Folgendes: Ich habe 2 Textdateien.

  1. user.txt
  2. usermatrikel.txt

In der user.txt steht in jeder Zeile ein Userkürzel drin. Kein Userkürzel ist doppelt vorhanden.

In der usermatrikel.txt stehen in jeder Zeile die gleichen Userkürzel drin, dann ein Kommata, gefolgt von der Matrikel. Auch hier gibt es keine doppelten Einträge.

  • z. B.: tkr ; AKGWG (Leerzeichen bewußt für die Verdeutlichung eingefügt)

Das jeweilige Userkürzel ergibt sich aus dem Windows Login Namen %username%.

Mein Code sieht wie folgt aus:

01.
@echo off 
02.
SET DATEI1=e:\User.txt 
03.
SET DATEI2=e:\UserMatrikel.txt 
04.
 
05.
:Teams1 
06.
echo. 
07.
echo Die Teams Auswertungs- und Selektionsdateien werden zurck kopiert. 
08.
echo ------------------------------------------------------------------- 
09.
echo %USERNAME% 
10.
For /F "tokens=1 delims=;" %%a in (%DATEI1%) do (IF %%a==%USERNAME% goto Teams2) 
11.
GOTO Fehler 
12.
 
13.
:Teams2 
14.
FOR /F "tokens=1 delims=;" %%a IN (%DATEI2%) DO (IF %%a==%USERNAME% SET MTK=%%b) 
15.
echo Hier sollte die Matrikel stehen: %MTK% 
16.
pause 
17.
Goto loeschen 
18.
 
19.
:Fehler 
20.
echo Nix gefunden -,- 
21.
pause 
22.
Goto loeschen 
23.
 
24.
:loeschen 
25.
:: Lösche Variablen 
26.
SET DATEI1= 
27.
SET DATEI2= 
28.
SET MTK= 
29.
EXIT
  1. Die Batch Datei soll aus der user.txt auslesen, ob der Wert %username% dort vorhanden ist. Wenn ja, dann soll er zu :Teams2 springen. Wenn nicht, zu :Fehler.
  2. Bei :Teams2 soll der 2. Wert, der hinter dem Wert %username% steht, gesetzt werden als MTK.
  3. Doch soweit kommt es gar nicht -,-
  4. Es wird gleich zu :Fehler gesprungen.

Das Gute an der Sache ist, es hat schon mal geklappt. In einer ähnlichen Form. Besonders die Ermittlung des Wert %username% aus der user.txt. Nur jetzt nicht mehr.

Die gesetzen Pfade habe ich doppelt und dreifach kontrolliert, den Inhalt der beiden Textdateien auch. Nur, warum springt er mir gleich zu :Fehler ? Was übersehe ich?

Über andere Tips würde ich mich auch sehr freuen.

Danke euch fürs lesen.

LG Tom-Jan
Mitglied: Biber
04.05.2009 um 11:13 Uhr
Moin Tom-Jan,

der Hauptfehler steckt in dieser Zeile
FOR /F "tokens=1 delims=;" %%a IN (%DATEI2%) DO (IF %%a==%USERNAME% SET MTK=%%b)

Da du mit "tokens=1" nur das erste Token (im folgenden als %%a bekannt) aus der Zeile rausbröselst, kannst du am rechten Rand solange ein %%b zuweisen, wie Du magst.... da wird nie ein zeilenspezifischer Wert rüberwandern.

Ändere, wenn Du Token 1 und Token 2 brauchst die Zeile in
FOR /F "tokens=1,2 delims=;" %%a IN (%DATEI2%) DO (IF %%a==%USERNAME% SET MTK=%%b)

.. und alles wird besser.

Grüße
Biber
Bitte warten ..
Mitglied: LotPings
04.05.2009 um 11:28 Uhr
Hallo Tom-Jan,

ich würde die if -Abfrage unabhängig von der Groß-/Kleinschreibung machen, ggfs ist das der Grund das %USERNAME% nicht gefunden wird
For /F "tokens=1 delims=;" %%a in (%DATEI1%) do (IF /I %%a==%USERNAME% goto Teams2)

Gruß
LotPings
Bitte warten ..
Mitglied: Tom-Jan
04.05.2009 um 11:33 Uhr
Grüß Dich Biber,

danke erstmal dafür ! Wäre dann wohl meine 2. Frage geworden -,-

Kann ich das auch so schreiben?
01.
FOR /F "tokens=1* delims=;" %%a IN (%DATEI2%) DO (IF %%a==%USERNAME% SET MTK=%%b)
(siehe das * nach der 1)

Ok, der Inhalt des Textes, der hier stand, wurde gelöst
Bitte warten ..
Mitglied: Tom-Jan
04.05.2009 um 11:37 Uhr
Hallo LotPings,
Zitat von LotPings:
Hallo Tom-Jan,

ich würde die if -Abfrage unabhängig von der
Groß-/Kleinschreibung machen, ggfs ist das der Grund das
%USERNAME% nicht gefunden wird
For /F "tokens=1 delims=;" %%a in (%DATEI1%) do (IF /I
%%a==%USERNAME% goto Teams2)


Gruß
LotPings

danke ! Das war es. Die Groß-/Kleinschreibung. Die Routine springt jetzt an den richtigen Punkt.

Hätte nicht gedacht, dass sowas "kleines" eine so große Auswirkung haben kann.
Bitte warten ..
Mitglied: Biber
04.05.2009 um 12:40 Uhr
Moin Tom-Jan,

nur der Vollständikeit halber: wie ein Test am CMD-Prompt zeigt..
01.
>FOR /F "tokens=1* delims=;" %a IN ("userxy;sjfg3") do @echo if /i [%a]==[userXY] set "MTK=%b" 
02.
if /i [userxy]==[userXY] set "MTK=sjfg3" 
03.
 
04.
(=12:33:50  D:\temp=) 
05.
>FOR /F "tokens=1,2 delims=;" %a IN ("userxy;sjfg3") do @echo if /i [%a]==[userXY] set "MTK=%b" 
06.
if /i [userxy]==[userXY] set "MTK=sjfg3"
... in Deinem Fall wären Syntaxis..äh...Syntaxen...ich meine Aufrufvarianten im Ergebnis gleichwertig.
Einen Unterschied bekämst Du allerdings, wenn mehr als 2 "tokens" in einer Zeile sein sollten.

01.
>FOR /F "tokens=1* delims=;" %a IN ("userxy;sjfg3;drei") do @echo if /i [%a]==[userXY] set "MTK=%b" 
02.
 
03.
if /i [userxy]==[userXY] set "MTK=sjfg3;drei"
Grüße
Biber

P.S. Den fehlenden "/i"-Parameter habe ich gar nicht wahrgenommen, da mir sofort der Bug#2 ins Auge gesprungen ist.
Bitte warten ..
Mitglied: Tom-Jan
04.05.2009 um 14:16 Uhr
Hallo Biber nochmal,

danke Dir für die Erklärung. Den Test hätte ich noch ausgeführt, wenn es bis dahin gegangen wäre ^^

Hat sich mit LotPings Beitrag zeitlich überschnitten.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Google Android
Textdatei auf SD Karte auslesen funktioniert nicht (Oneplus One) (4)

Frage von lordzwieback zum Thema Google Android ...

Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...