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, 4529 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Windows Userverwaltung
gelöst Mit der PoweShell die lokal angelegten Users eines anderen Rechners auflisten (7)

Frage von M.Marz zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...