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

Vergessliche Schleife

Frage Entwicklung Batch & Shell

Mitglied: Johtoe

Johtoe (Level 1) - Jetzt verbinden

02.09.2011, aktualisiert 13:56 Uhr, 2588 Aufrufe, 6 Kommentare

Hallo in die Runde.

Sollte es mir bei der Suche entgangen sein, dass die Frage bereits behandelt wurde, so bitte ich um Nachsicht.
Nicht nur ich bin neu hier im Forum, die Batchverarbeitung ist auch noch sehr neu für mich.

Habe nun eine vorhandene Batch-Datei geringfügig erforlgreich angepasst und vom (Anfänger)-Glück beseelt mich bei weiteren Änderungen verhaspelt.

Und das sind die Beteiligten:
- die auszuführende Anwendung "befehl.exe"
- die Datei "kundennr.txt" mit wenigen Kundennummern
- die Datei "parameter.txt" mit Parametern
- die Datei "gesperrt.txt", diese Datei verhindert den Start der Anwendung "befehl.exe"

Und das soll gemacht werden:
- zuerst sollen die Kunden aufgelistet werden. Dazu wird die Datei "kundennr.txt" zeilenweise ausgelesen und die Kundennummern per ECHO ausgegeben.
- im zweiten Schritt sollen die Parameter im Klartext angezeigt werden. Dazu wird Datei "parameter.txt" zeilenweise ausgelesen und da es nur wenige sind, werden sie gleich im Klartext angezeigt.
- Pro Kunde soll die Anwednung alle Parameter abarbeiten.
- existiert die Datei "gesperrt.txt", so wird pro Kunde abgefragt, ob die Datei "gesperrt.txt" gelöscht werden soll.

Die Löschung der "gesperrt.txt" pro Kunde ist nun mein Problem. In der Schleife wird der Kunde vergessen!?

01.
REM @ECHO OFF 
02.
CLS 
03.
Setlocal EnableDelayedExpansion 
04.
ECHO Folgende Kunden sind gelistet: 
05.
FOR /f %%i IN (kundennr.txt) DO ( 
06.
	ECHO - %%i 
07.
08.
ECHO. 
09.
ECHO Folgende Parameter werden in dieser Reihenfolge abgearbeitet: 
10.
FOR /f %%y IN (parameter.txt) DO (  
11.
	IF "%%y"====parameter1! ECHO - Klartext_fuer_parameter_1 
12.
	IF "%%y"====parameter2! ECHO - Klartext_fuer_parameter_2 
13.
	IF "%%y"====parameter3! ECHO - Klartext_fuer_parameter_3 
14.
15.
ECHO. 
16.
PAUSE 
17.
ECHO. 
18.
FOR /f %%i IN (kundennr.txt) DO (  
19.
	ECHO. 
20.
	ECHO Kunde: %%i Start !time:~0,8! Uhr 
21.
:: Abfrage, ob bei Vorhandensein die Datei gesperrt.txt gelöscht werden soll. 
22.
	:Beginn 
23.
	IF NOT EXIST gesperrt.txt GOTO Weiter 
24.
	IF EXIST gesperrt.txt ECHO Anwenung gesperrt & goto Frage 
25.
	:Frage  
26.
	ECHO Um fortzufahren muss die Datei gesperrt.txt geloescht werden. 
27.
	SET /p wahl=Wollen Sie die Datei gesperrt.txt jetzt loeschen? (J N) & goto Antwort 
28.
	:Antwort 
29.
	FOR %%a IN (J N) DO IF /i '!wahl!'=='%%a' GOTO Wahl%%a  
30.
	ECHO. 
31.
	ECHO Ungueltige Antwort, nur (J N) & goto Frage  
32.
	:WahlN  
33.
	ECHO. 
34.
	ECHO Sie haben NEIN gewaehlt, Anwendung abgebrochen. 
35.
	GOTO Ende  
36.
	:WahlJ  
37.
	DEL gesperrt.txt  
38.
	ECHO. 
39.
	ECHO Sie haben JA gewaehlt, die Datei gesperrt.txt wurde geloescht. 
40.
	ECHO Anwendung gestartet. 
41.
	ECHO. 
42.
	ECHO Kunde: %%i  Start   !time:~0,8! Uhr  
43.
	:Weiter 
44.
	ECHO. 
45.
		FOR /f %%y IN (parameter.txt) DO (  
46.
		IF "%%y"====parameter1! ECHO.|set /p =- Klartext_fuer_parameter_1 wird durgefuehrt 
47.
		IF "%%y"====parameter2! ECHO.|set /p =- Klartext_fuer_parameter_2 wird durgefuehrt 
48.
		IF "%%y"====parameter3! ECHO.|set /p =- Klartext_fuer_parameter_3 wird durgefuehrt 
49.
		start befehl.exe  
50.
		ECHO  Beendet !time:~0,8! Uhr 
51.
52.
53.
ECHO. 
54.
ECHO Abgeschlossen %date:~0% - %time:~0,8% Uhr. 
55.
:ENDE 
56.
ENDLOCAL 
57.
ECHO. 
58.
PAUSE
Mitglied: 60730
02.09.2011 um 13:24 Uhr
moin und willkommen

  • nimm bitte bitte bitte bitte bitte bitte bitte bitte bitte das vermaledeite @echo off raus, bis die Batch Wasserdicht ist.
  • dann hast du beim umwerklen offenbar hier (Zeile 11-13, 46-48) einen Bock geschossen.

IF %%y!==parameter1! ECHO
Würde ich "so" malen
IF "%%y"
"parameter1!" ECHO

Das watr das allererste grob geschnitten gefundene - aber wo hängst denn bei dir genau?

Mit anderen Worten, die Fehlerfunde haben keinen Anspruch auf Vollständigkeit.

Gruß
Bitte warten ..
Mitglied: jeb-the-batcher
02.09.2011 um 13:30 Uhr
Hallo und willkommen,

ich denke das folgende ist ein wenig problematisch
01.
FOR /f %%i IN (kundennr.txt) DO (   
02.
       .... 
03.
	SET /p wahl=Wollen Sie die Datei gesperrt.txt jetzt loeschen? (J N) & goto Antwort  
04.
	:Antwort  
05.
	FOR %%a IN (J N) DO IF /i '%wahl%'=='%%a' GOTO Wahl%%a
Da %wahl% nicht mehr expandiert wird weil es in einem Block liegt (soviel zur täglich wiederkehrenden Frage).
Da wäre ein !wahl! mit aktiviertem delayed expansion die bessere Wahl (Ist ja eh schon aktiv).

jeb
Bitte warten ..
Mitglied: Skyemugen
02.09.2011 um 14:11 Uhr
Zitat von 60730:
aber wo hängst denn bei dir genau?


Aloha T-Mo,

na beim Schildern des Problems

Den Ist-Zustand dürfen wir uns im Skript zurechtmausern, immerhin gibt er den Soll-Zustand vor ...

Wie war das mit GOTO innerhalb der Schleife? Glaube da stand etwas in unserem schönen Tutorial zur FOR-Schleife ...
Wer mag Böcke?

greetz André

P.S.:
01.
:ENDE  
02.
ENDLOCAL 
überflüssig
Bitte warten ..
Mitglied: Johtoe
02.09.2011 um 15:39 Uhr
Danke für die schnelle Antworten!

Habe den Quellcode editiert.

@ TimoBeil
Anführungszeichen und die vier Gleichheitszeichen ("" und
) in Zielen 11-13 und 46-48 gesetzt, mit dem Effekt der ausgeblendeten Parameter&Ausgabe in den geänderten Zeilen.

Zu deiner Frage: die Schleife (ab Zeile 18) vergisst die kundennr; z.B. in Zeile 42 sehe ich in der Ausgabe nur "Kunde: %i"


@ jeb-the-batcher
delayed expansion ist gesetzt, der Unterschied zwischen %wahl% und !wahl! ist mir (noch) unbekannt.
Bitte warten ..
Mitglied: Johtoe
02.09.2011 um 17:14 Uhr
Danke für die bisherige Hilfe und insbesondere für den Link zum Tutorial.

So komme ich der Sache näher...
Nach dem ersten Überfliegen sehe ich keine Alternative, als die Abfrage nach der gesperrt.txt und auch deren Behandlung (ab Zeile 21) ohne GOTO in den Griff zu bekommen.

"Mir drei sin furchtbar talentiert – am Selvermache interessiert..."
Nehme die Lektüre mit ins Wochenende. Feuerpause bis dahin.
Bitte warten ..
Mitglied: Skyemugen
02.09.2011 um 17:53 Uhr
Aloha,

nun, zum Einen ist die J N Abfrage auch ohne Schleife machbar, mit reinem if /i und else oder && und || da es nur schwarz oder weiß gibt (außer es tippt jemand K ein ...) ... gilt auch für dein if exist ... eine Abfrage genügt doch

Statt GOTO solltest du dann eventuell das Arbeiten mit CALL :Sprungmarke versuchen

hier mal ein kurzes Beispiel für die Abfrage und {{
01.
@echo off & setlocal enabledelayedexpansion 
02.
for %%s in (echo) do ( 
03.
	:Frage 
04.
	set /p wahl=Ja oder Nein 
05.
	if /i !wahl!==J ( 
06.
		echo JA 
07.
	) else ( 
08.
		if /i !wahl!==N ( 
09.
			echo Nein 
10.
		) else ( 
11.
			echo falsche Eingabe && call :Frage 
12.
			goto :eof 
13.
14.
15.
16.
echo weiter geht's 
17.
pause
greetz André
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Microsoft Office
Vereinfachen einer Schleife
Frage von Jens1975Microsoft Office1 Kommentar

Hallo, ich bin neu und versuche mich jetzt mit VBA Ich möchte die Funktion Autofill durch eine Schleife ersetzen. ...

Netzwerkprotokolle
STP und Schleifen
gelöst Frage von ottokarlNetzwerkprotokolle20 Kommentare

Hallo, ich habe eine allgemeine Frage. Situation: Ich nehme ein Kabel und stecke es im Switch z.B. in Port ...

Entwicklung
PowerShell - Schleifen
gelöst Frage von 119785Entwicklung8 Kommentare

Hallo Leute, ich habe hier eine Aufgabe und brauche mal einen kleinen Tip. Entweder habe ich eine Denkbloacke oder ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 10 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 15 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 15 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Windows Server
SMBv1 deaktivieren führte zur Katastrophe, keine Domänenanmeldung mehr
Frage von Freak-On-SiliconWindows Server14 Kommentare

Servus; Habe Mist gebaut. Umgebung: Server 2012R2 Domäne 2x DC ~10 Memberserver (2012R2 und 2008R2) ~100 Windows 8 Clients ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Grafikkarten & Monitore
2x 4K Monitore an einer GraKa betreiben
gelöst Frage von JollyJumper83Grafikkarten & Monitore10 Kommentare

Hallo liebe IT-Gemeinde, ich bin auf der Suche nach einer kostengünstigen GraKa für meinen Präsentations-PC. Wir möchten in unserem ...