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, 4599 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
Festplatten, SSD, Raid
RAID Controller mit Festplatten in anderen Server verschieben (7)

Frage von vBurak zum Thema Festplatten, SSD, Raid ...

Vmware
gelöst ESXI 6.5 Fehler beim verschieben der VM auf anderen Datastore (Snapshoots) (10)

Frage von zeroblue2005 zum Thema Vmware ...

Entwicklung
Aufgabe zum überprüfen einer anderen Aufgabe (4)

Frage von tresha zum Thema Entwicklung ...

VB for Applications
gelöst Zuordnen von Daten per VBA aus zweitem anderen Tabellenblättern (4)

Frage von Semmy1 zum Thema VB for Applications ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte