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

gelöst GOTO label automatisch hochzaehlen

Mitglied: rw2000

rw2000 (Level 1) - Jetzt verbinden

05.02.2010 um 14:14 Uhr, 4546 Aufrufe, 7 Kommentare

hallo leute,

ich bin neu hier in diesem klasse forum, das mir schon oft weiter geholfen hat. jetzt stehe ich mit einem problem aber ziemlich auf dem schlauch.

ich habe folgendes vor:

ich starte mehrere robocopy-jobs gleichzeitig und warte, bis alle beendet sind (sprich, bis alle robocopy.exe-prozesse weg sind), dann gehts weiter
mit den naechsten jobs, warten, naechste jobs usw.

das klappt soweit auch prima mit diesem code:



REM Hier werden mehrere RoboCopy's gestartet, den genauen Aufruf spar ich mir hier mal

START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...

REM Der folgende Loop soll auf die Beendigung der RoboCopy's warten ...

:ROBOCOPY_LOOP_1
TASKLIST | FINDSTR /I ROBOCOPY.EXE > NUL
IF %ERRORLEVEL% == 0 GOTO ROBOCOPY_LOOP_1 > NUL

REM Hier werden mehrere RoboCopy's gestartet, den genauen Aufruf spar ich mir hier mal

START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...

REM Der folgende Loop soll auf die Beendigung der RoboCopy's warten ...

:ROBOCOPY_LOOP_2
TASKLIST | FINDSTR /I ROBOCOPY.EXE > NUL
IF %ERRORLEVEL% == 0 GOTO ROBOCOPY_LOOP_2 > NUL

REM Hier werden mehrere RoboCopy's gestartet, den genauen Aufruf spar ich mir hier mal

START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...

REM Der folgende Loop soll auf die Beendigung der RoboCopy's warten ...

:ROBOCOPY_LOOP_3
TASKLIST | FINDSTR /I ROBOCOPY.EXE > NUL
IF %ERRORLEVEL% == 0 GOTO ROBOCOPY_LOOP_3 > NUL

REM usw. ...


wie man sehen kann, habe ich die labels fuer die goto-befehle hier 'fest verdrahtet', was zwar wie gesagt funktioniert, aber etwas unelegant ist.

deshalb habe ich versucht, den zaehler, den ich an dem sprungziel mit dran habe, automatisch hochzuzaehlen:



REM Hier werden mehrere RoboCopy's gestartet, den genauen Aufruf spar ich mir hier mal

START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...

REM Der folgende Loop soll auf die Beendigung der RoboCopy's warten ...

IF "%NUMBER%" == "" SET NUMBER=1
:ROBOCOPY_LOOP_%NUMBER%
TASKLIST | FINDSTR /I ROBOCOPY.EXE > NUL
IF %ERRORLEVEL% == 0 GOTO ROBOCOPY_LOOP_%NUMBER% > NUL
SET /A NUMBER=%NUMBER%+1

REM Hier werden mehrere RoboCopy's gestartet, den genauen Aufruf spar ich mir hier mal

START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...

REM Der folgende Loop soll auf die Beendigung der RoboCopy's warten ...

IF "%NUMBER%" == "" SET NUMBER=1
:ROBOCOPY_LOOP_%NUMBER%
TASKLIST | FINDSTR /I ROBOCOPY.EXE > NUL
IF %ERRORLEVEL% == 0 GOTO ROBOCOPY_LOOP_%NUMBER% > NUL
SET /A NUMBER=%NUMBER%+1

REM Hier werden mehrere RoboCopy's gestartet, den genauen Aufruf spar ich mir hier mal

START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...
START /B ROBOCOPY.EXE ...

REM Der folgende Loop soll auf die Beendigung der RoboCopy's warten ...

IF "%NUMBER%" == "" SET NUMBER=1
:ROBOCOPY_LOOP_%NUMBER%
TASKLIST | FINDSTR /I ROBOCOPY.EXE > NUL
IF %ERRORLEVEL% == 0 GOTO ROBOCOPY_LOOP_%NUMBER% > NUL
SET /A NUMBER=%NUMBER%+1

REM usw. ...



ABER: irgendwie erkennt das script das sprungziel nicht mehr, es kommt schon nach der ersten schleife die fehlermeldung:


The system cannot find the batch label specified - ROBOCOPY_LOOP_1



so, hab ich hier nur noch ein kleines syntax-problem, auf das ich einfach nicht komme oder womoeglich doch einen groesseren denkfehler?


wer kann mir helfen?


vielen dank im voraus ...


so long

rainer
Mitglied: 5t8d1e
05.02.2010 um 17:45 Uhr
Hallo,

meines Erachten nach ist deine Denkweise etwas schräg. Wie soll der cmd-Interpreter eine Sprungmarke finden wenn diese nicht vorhanden ist?

The system cannot find the batch label specified - ROBOCOPY_LOOP_1 sagt ja alles aus oder?

Grüße Torsten
Bitte warten ..
Mitglied: miniversum
05.02.2010 um 17:51 Uhr
Ich würde das anders lösen. Die Schleife fürs warten kannst du ja in eine unterprozedur packen die um immer wieder übe rein call aufrufst:
01.
START /B ROBOCOPY.EXE ...
02.
START /B ROBOCOPY.EXE ...
03.
START /B ROBOCOPY.EXE ...
04.
START /B ROBOCOPY.EXE ...
05.

06.
call:warten
07.

08.
START /B ROBOCOPY.EXE ...
09.
START /B ROBOCOPY.EXE ...
10.
START /B ROBOCOPY.EXE ...
11.
START /B ROBOCOPY.EXE ...
12.

13.
call:warten
14.

15.
START /B ROBOCOPY.EXE ...
16.
START /B ROBOCOPY.EXE ...
17.
START /B ROBOCOPY.EXE ...
18.
START /B ROBOCOPY.EXE ...
19.

20.
goto:eof
21.

22.
:warten
23.
:ROBOCOPY_LOOP_1
24.
TASKLIST | FINDSTR /I ROBOCOPY.EXE > NUL
25.
IF %ERRORLEVEL% == 0 GOTO ROBOCOPY_LOOP_1 > NUL
Bitte warten ..
Mitglied: bastla
05.02.2010 um 18:14 Uhr
... wobei sich dann das Unterprogramm noch auf
01.
:warten
02.
TASKLIST|FINDSTR /I ROBOCOPY.EXE>NUL && goto:warten
03.
goto:eof
reduzieren ließe (und wenn danach nix mehr kommt, reichen die ersten beiden Zeilen ).

Auf jeden Fall hat miniversum die mE sinnvollste Variante gezeigt ...

Grüße
bastla
Bitte warten ..
Mitglied: laster
06.02.2010 um 13:32 Uhr
Hallo,

wenn Du schon mit start arbeitest, kannst Du doch die Option /WAIT nutzen?

vG LS
Bitte warten ..
Mitglied: bastla
06.02.2010 um 14:35 Uhr
... klingt sinnvoll - um den derzeitigen Ablauf nachzubilden, müsste allerdings abzuschätzen sein, welcher der parallel laufenden Vorgänge am längsten dauert (um nur diesen als letzten Befehl des Blocks mit "/wait" aufzurufen) ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
06.02.2010 um 15:05 Uhr
... ich würde eher versuchen, die Anforderung konventionell zu lösen.

Wenn x Robocopy-"Threads" parallel gestartet werden sollen und der Batch-Ablauf erst weiterlaufen soll, wenn alle fertig sind..

Ja hey! Dann können doch alle Robocopy-Jobs jeweils ein "Robocopy_log.001"...bis "..007" schreiben und der Batch prüft,
ob "Robocopy_log.001" bis "..007" da sind.
Denn Protokoll-Dateien bei einem Kopier/Sicherungslauf will ich ja ohnehin haben.

[Um einen Einwand zu entkräften: Das Risiko, dass einer der Robocopy-Jobs derart in die Grütze geht, dass er keine Kraft mehr hat ein Log zu schreiben... das halte ich für zu vernachlässigen.]

Grüße
Biber

[Edit] Die Formulierung ob "Robocopy_log.001" bis "..007" da sind" sollte eigentlich noch etwas verfeinert werden.
Denn eine Log-Datei ist möglicherweise schon vorhanden, bevor Robocopy fertig (jedenfalls würde von mir geschriebenes Kopierprogramm auch nach jedem Teil-Erfolg etwas schreiben). Also sollte nicht nur mit IF EXIST geprüft werden, ob ein Log vorhanden ist, sondern mit Find/FindStr inhaltlich auf die Zeile "Summary"/Zusammenfassung oder whatever Robocopy so zum Schluss schreibt.
[/Edit]
Bitte warten ..
Mitglied: rw2000
08.02.2010 um 10:06 Uhr
hallo leute,

vielen dank fuer die zahlreichen antworten.

@ thorsten: die sprungmarke ist ja zu diesem zeitpunkt schon vorhanden, da ich sie ja mit IF "%NUMBER%" == "" SET NUMBER=1 setze. wird mir auch angezeigt wenn ich REM :ROBOCOPY_LOOP_%NUMBER% angebe.
trotzdem findet der batch sie nicht. womoeglich ist da eher die denkweise von microsoft schraeg. egal.

@ laster: start /wait bringt ja nix, weil ich mehrere gleichzeitig starten will und mit /wait wartet er ja zwangslaeufig, bis der vorgaenger beendet ist.

@ biber: logs will ich keine erzeugen, insofern scheidet das aus. threads ist eigentlich das stichwort, denn mit windows 7 kann robocopy multi-threads ausfuehren. dann koennt ich mir das ganze sparen. muss aber unter xp laufen.

@ miniversum und bastla: eure vorschlaege scheinen die loesung zu sein. dass ich mir im batch so eine art subroutinen basteln kann wusste ich bis jetzt nicht. man lernt nie aus.

so long

rainer
Bitte warten ..
Ähnliche Inhalte
Netzwerkprotokolle
MPLS Label Distributing Protocoll
Frage von battermanNetzwerkprotokolle1 Kommentar

Hallo Leute, ich muss da mal was wegen dem Labl Distributing Protocoll fragen. Also: Wenn ein Label Switched Path ...

Visual Studio
Bewegtes Label Visual Basic
gelöst Frage von Cougar77Visual Studio1 Kommentar

Guten Abend, ich versuche mich grade ein bisschen an VB. An sich würde ich gerne ein beliebiges Element (Label, ...

Microsoft
Label per Dateiaufruf drucken
gelöst Frage von michaelzMicrosoft3 Kommentare

Hallo zusammen! Ich möchte mit einem Brother QL-500 Etikettendrucker per Batch-Datei Ausdrucke tätigen. Mache ich im Explorer auf eine ...

Visual Studio
VB.Net - Label-Control skalieren
gelöst Frage von emeriksVisual Studio8 Kommentare

Hi, kann man im Visual Studion ein Label-Control skalieren? Bsp.: Ich habe eine verfügbare Fläche, welches vollständig durch ein ...

Neue Wissensbeiträge
Windows 10

Windows 10 - Programme laufen schneller, wenn Sie mit Administratorrechten ausgeführt werden

Erfahrungsbericht von 1Werner1 vor 21 StundenWindows 107 Kommentare

Moin, das wollte ich erst nicht glauben, aber es ist so. Wenn Ihr ein Programm mit Administratorrechten unter Windows ...

Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 1 TagSicherheits-Tools5 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Off Topic
Sachen die die Welt nicht braucht - Platz 1
Tipp von brammer vor 4 TagenOff Topic21 Kommentare

Hallo, ich habs als Tipp angelegt als Erfahrungsbericht nein Danke brammer

Humor (lol)
Spirit of Health-Kongress in Berlin
Information von AnkhMorpork vor 5 TagenHumor (lol)6 Kommentare

tgif! Beim dritten Spirit of Health-Kongress trafen sich am Wochenende Alternativmediziner und Naturheilkundler im Maritim Hotel Berlin, um sich ...

Heiß diskutierte Inhalte
Hardware
Telefonanlagen - Welche gibt es
Frage von Xaero1982Hardware25 Kommentare

Nabend Zusammen, ich suche eine neue TK Anlage und mein Auftraggeber will jetzt was völlig neues - State of ...

Windows Server
Eingeschränkte Gruppen - Spezielle Benutzergruppe hinzufügen
Frage von killtecWindows Server17 Kommentare

Hallo, ich möchte gerne folgendes Realisieren: Ich habe bei mir Eingeschränkte Gruppen via GPO aktiv und möchte nun der ...

Microsoft Office
Videodateien auf Windows Server 2008 R2 öffnen schlägt fehl
Frage von SchroediMicrosoft Office16 Kommentare

Hallo zusammen, wir haben das Problem das embedded Videos in PowerPoint (O365) auf unserer Citrix Farm (6.5) nicht abgespielt ...

LAN, WAN, Wireless
Intel(R) PRO Wireless 3945ABG
gelöst Frage von Leon509LAN, WAN, Wireless15 Kommentare

Hallo, habe ein Laptop Fujitsu (Intel, 4GB, 2GHz, Windos10, Intel(R) PRO/Wireless 3945ABG ) ein O2 DSL Anschluss Home50. Leider ...