Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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 Schleife nach der X. Ausführung einen anderen Befehl aufrufen

Frage Entwicklung Batch & Shell

Mitglied: majcho

majcho (Level 1) - Jetzt verbinden

09.01.2012 um 15:07 Uhr, 4684 Aufrufe, 6 Kommentare

Hallo,

würde gerne eine Schleife 80 mal ausführen, bis dann ein ein weiterer Befehl erfolgt. Kann mir jemand eine Lösung sagen?

Hier mein Versuch, der allerdings nicht nach dem 80. Aufruf die Funktion batch2.bat sondern alle Dateien ausführt und dann die Schleife endlos wiederholt.

01.
set numb=1 
02.
 
03.
:start 
04.
FOR /F "tokens=1,2" %%i in ('type dateien.txt') do ( 
05.
if %numb%==80 goto batch2 
06.
set /a numb +=1 
07.
IF NOT EXIST %%i curl -o %%i %%j ) 
08.
 
09.
:batch2 
10.
call batch2.bat 
11.
goto start
Mitglied: Skyemugen
09.01.2012 um 15:11 Uhr
Aloha,

hmm soso er führt also kein goto aus einer Schleife heraus aus? Ja, sowas ... eventuell mal in unserem Tutorial zur FOR-Schleife vorbeischauen, die dir dann auch erklärt, dass das auch nicht realisierbar ist.

Ich würde wenn dann eher zu
if %numb%==80 call batch2.bat && goto :eof tendieren aber du willst wohl danach nochmal 80 Durchgänge oder wie oder was? du kannst natürlich auch deine Hauptschleife in eine for /L %%s in (1,1,80) legen, jeder wie er's mag.

greetz André
Bitte warten ..
Mitglied: Pjordorf
09.01.2012 um 15:12 Uhr
Hallo,

Zitat von majcho:
01.
02.
03.
04.
> :batch2 
05.
> call batch2.bat 
06.
> goto start 
07.
> 
Warum ist dort ein goto start drin?

Gruß,
Peter
Bitte warten ..
Mitglied: majcho
09.01.2012 um 15:28 Uhr
Das ist die Lösung

01.
for /L %%s in (1,1,80)
Danke!!!
Bitte warten ..
Mitglied: icsat
09.01.2012 um 15:47 Uhr
Zitat von majcho:
Hier mein Versuch, der allerdings nicht nach dem 80. Aufruf die Funktion batch2.bat sondern alle Dateien ausführt und dann
die Schleife endlos wiederholt.

Hallo majcho,

hast Du Dir die Ausgabe Deines Codes mal angesehen?

Warum endet die Schleife nicht nach Versuch 80?
Das Problem ist imho nicht das der goto in der For-Schleife nicht funktioniert, sondern dass Du immer "1" mit "80" vergleichst, da auf die Variable "numb" erst nach Beendigung der For-Schleife mit neuem Inhalt zugegriffen werden kann. Du kannst das umgehen, in dem Du "SETLOCAL EnableDelayedExpansion" verwendest und die Variable in der For-Schleife mit "!numb!" ansprichst. Details dazu stehen bestimmt in einem der guten Batch Tutorials.

Aber ich gebe Skyemugen recht, dass ich hier auch kein goto verwenden würde.

Warum wird die Schleife endlos wiederholt?
01.
goto start

Gruß icsAT
Bitte warten ..
Mitglied: majcho
09.01.2012 um 15:53 Uhr
@ skymugen & icsat

Danke für die Infos. Bin Frischling und daher noch nicht so weit um mit Rookis mitzuhalten. Deshalb meine Frage. Das mit der For /L %%s in (1,1,80) hilft mir schon weiter die Schleife zu verstehen. Habe das ausprobiert. Leider keine Ahnung wie ich aus der 80. Umrundung wieder rauskomme, die dateien.txt umfasst 2400 Dateien, nach jeder 80. Ausführung soll batch2.bat aufgerufen werden.

01.
for /L %%s in (1,1,80) do ( 
02.
call batch2.bat 
03.
FOR /F "tokens=1,2" %%i in ('type dateien.txt') do ( 
04.
IF NOT EXIST %%i curl -o %%i %%j  
05.
06.
)
Bitte warten ..
Mitglied: icsat
09.01.2012 um 16:34 Uhr
Nun verarbeitest Du die Datei "dateien.txt" 80 mal und zwar vollständig ;-( Vor jedem vollständigen Verarbeiten wird batch2 aufgerufen.

Da es nun eine neue Anforderung gibt:
Zitat von majcho:
die dateien.txt umfasst 2400 Dateien, nach jeder 80. Ausführung soll batch2.bat aufgerufen
werden.
Das "...nach jeder..." war bisher bei mir nicht angekommen, daher würde ich Deinen Ursprungsansatz weiter verfolgen:
01.
SETLOCAL EnableDelayedExpansion 
02.
set numb=0 
03.
 
04.
FOR /F "tokens=1,2" %%i in (dateien.txt) do ( 
05.
   set /a numb +=1 
06.
   if "!numb!"=="80" ( 
07.
      set numb=0 
08.
      call batch2.bat 
09.
10.
   if not exist %%i curl -o %%i %%j 
11.
12.
 
13.
ENDLOCAL 
14.
 
15.
goto :eof
Gruß icsAT
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Cmd Befehle in Powershell GUI aufrufen (5)

Frage von Markus2016 zum Thema Batch & Shell ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Batch & Shell
gelöst Verschachtelte FOR-Schleife mit einem Argument (3)

Frage von mp-home zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: CMD Kommando mit Parameter aufrufen (8)

Frage von bonnerjung zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Router & Routing
Grundkonfiguration Firewall und L3 Switch? (21)

Frage von Maik20 zum Thema Router & Routing ...

Outlook & Mail
Dumme Sache - Userin hat Abwesenheitsnotz in Outlook vergessen (20)

Frage von 1410640014 zum Thema Outlook & Mail ...

Firewall
Richtige Grundeinstellungen der Pfsense für mein Netzwerk (15)

Frage von Spitzbube zum Thema Firewall ...