Top-Themen

Aktuelle Themen (A bis Z)

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, 3533 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 ..
Ähnliche Inhalte
Batch & Shell
Powershell - Doppelte Einträge einer Textdatei entfernen, BEIDE Einträge
gelöst Frage von TastuserBatch & Shell5 Kommentare

Hallo Ich habe eine Textdatei wo z.B. folgendes steht: Mensch Vogel Mensch Fisch Tier Jetzt möchte ich, dass der ...

Batch & Shell
Einen bestimmten Teil einer Textdatei auslesen
gelöst Frage von Focus1610Batch & Shell5 Kommentare

Hallo, ich brauche mal einen Denkanstoß. Ich bekomme per FTP von einem Kunden täglich mehrere Textdateien. Diese haben unterschiudlich ...

Entwicklung
AutoIt - Textdatei auslesen
Frage von rub444nEntwicklung9 Kommentare

Hallo zusammen, ich habe folgendes Problem und würde mich freuen wenn ihr mir helfen könnt. ich will über AutoIT ...

Batch & Shell
Auslesen der "LAN-Verbinung" in eine Textdatei
gelöst Frage von simonsaysBatch & Shell2 Kommentare

Hallo Gleich mal vorab: Ich bin ein Batch-Nullinger :-) Wir verwenden fixe IP-Adressen und fixe DNS-Server Jetzt hätte ich ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows 10
Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App
Tipp von kgbornWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...