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

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

Batch & Shell
Fehler in Schleife
gelöst Frage von miczarBatch & Shell2 Kommentare

Hallo zusammen, nachdem ich das letzte Problem weitestgehend selber lösen konnte, stehe ich nun vor einem neuen. Dieser Code ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 21 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 21 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...

LAN, WAN, Wireless
Gigabit-Lan mit zwei 4-adrigen Kabeln?
Frage von ArvedirmerLAN, WAN, Wireless11 Kommentare

Ich habe folgendes Problem: Ich betreue eine kleine Firma die sich im 1.Stock eines Gebäudes befindet. Es existiert ein ...

Router & Routing
Routing Probleme mit Firewall
gelöst Frage von mb1811Router & Routing9 Kommentare

Hallo Zusammen! Ich habe folgende Problematik, wo ich ein wenig Input benötige: Gem. angehängter Skizze habe ich folgenden Stand: ...