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, 2621 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 ..
Neue Wissensbeiträge
Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 10 StundenInternet3 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Router & Routing

Zyxel VMG 1312 B30A - Firmwareupdate nur im "privaten" Firefox Modus möglich

Tipp von the-buccaneer vor 1 TagRouter & Routing2 Kommentare

Hatte hier ein Zyxel 1312 das ums verrecken kein Firmwareupdate durchführen wollte. Datei ist auswählbar, dann kommt der Fortschrittskreisel ...

Windows 7

Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019

Information von kgborn vor 2 TagenWindows 75 Kommentare

Kleine Info für die Admins der oben genannten Maschinen. Ab Juli 2019 werden Updates von Microsoft nur noch mit ...

Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Information von ChriBo vor 4 TagenFirewall2 Kommentare

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Heiß diskutierte Inhalte
Hardware
IT-Werkzeugkoffer bis 50,- EUR
gelöst Frage von departure69Hardware53 Kommentare

Hallo. Ich bin als IT-Systembetreuer einer Gemeinde zusätzlich auch der IT-Systembetreuer einer Grund- und Hauptschule. Dort muß ich jedoch ...

Netzwerke
Verteilung von Programmdaten außerhalb des internen Netzwerkes
Frage von mertaufmbergNetzwerke27 Kommentare

Guten Morgen liebe Administratoren, ich versuche zurzeit eine möglichst sichere und einfache Lösung zu suchen, um ein Programmverzeichnis über ...

Datenbanken
PHP Fatal error: Uncaught Error: Call to undefined function oci connect
Frage von PlanitecXDatenbanken19 Kommentare

Hallo Zusammen, ich sitze seit Tagen am Problem das ich keine PHP Anwendung mit Anbindung zu Oracle zum laufen ...

Hardware
PC im Selbstbau, Workstation, mittelklasse Gaming
gelöst Frage von MrRobot1997Hardware19 Kommentare

Hallöchen Leute, ich bin seit einigen Jahren leider nicht mehr wirklich im Bild, wenn es um die Hardware und ...