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

Mitglied: Johtoe

Johtoe (Level 1) - Jetzt verbinden

02.09.2011, aktualisiert 13:56 Uhr, 2609 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
Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

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. ...

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
Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 1 StundeWindows Server

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 7 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 9 StundenHumor (lol)5 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 1 TagWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...