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

Batch-Prog führt echo 4x aus

Frage Entwicklung Batch & Shell

Mitglied: deb10er0

deb10er0 (Level 1) - Jetzt verbinden

15.04.2009, aktualisiert 15:50 Uhr, 3391 Aufrufe, 3 Kommentare

Hallo, erstmal!

Könnt Ihr euch mal meinen Quellcode mal anschauen. Liegt wahrscheinlich an den For-Schleifen. Mein echo-Befehl wird immer 4x ausgeführt, finde dazu aber keine Lösung. Könnt Ihr mir bitte helfen?

01.
echo off 
02.
rem set profil=%1 
03.
set profil=frank 
04.
set pfad_lokal=D:\%profil%\lokal.dat 
05.
set pfad_server=D:\%profil%\server.dat  
06.
 
07.
for /f "delims=" %%i in ('dir %pfad_lokal% /s /b /a-d') do call :splitDateLokal %%~ti 
08.
:splitDateLokal 
09.
for  /f "tokens=1-5 delims=.:," %%a in ("%1.%2") do (  
10.
               set TT_L=%%a 
11.
               Set MM_L=%%b 
12.
               Set JJ_L=%%c 
13.
               Set hh_L=%%d 
14.
               Set mi_L=%%e 
15.
 
16.
17.
 
18.
for /f "delims=" %%i in ('dir %pfad_server% /s /b /a-d') do call :splitDateServer %%~ti 
19.
:splitDateServer 
20.
for  /f "tokens=1-5 delims=.:," %%a in ("%1.%2") do (  
21.
               set TT_S=%%a 
22.
               Set MM_S=%%b 
23.
               Set JJ_S=%%c 
24.
               Set hh_S=%%d 
25.
               Set mi_S=%%e 
26.
27.
 
28.
set zeitlokal=%TT_L%%MM_L%%JJ_L%%hh_L%%mi_L% 
29.
rem set zeitserver=%TT_S%%MM_S%%JJ_S%%hh_S%%mi_S% 
30.
echo %zeitlokal% 
31.
rem echo %zeitserver%
Mitglied: bastla
15.04.2009 um 16:58 Uhr
Hallo deb10er0 und willkommen im Forum!

Da Du Unterprogramme aufrufst, musst Du auch dafür sorgen, dass diese, aber auch das Hauptprogramm, ordnungsgemäß (mit einem goto :eof) abgeschlossen werden:
01.
echo off & setlocal 
02.
rem set profil=%1 
03.
set profil=frank 
04.
set pfad_lokal=D:\%profil%\lokal.dat 
05.
set pfad_server=D:\%profil%\server.dat  
06.
 
07.
for /f "delims=" %%i in ('dir %pfad_lokal% /s /b /a-d') do call :splitDateLokal %%~ti 
08.
for /f "delims=" %%i in ('dir %pfad_server% /s /b /a-d') do call :splitDateServer %%~ti 
09.
 
10.
set zeitlokal=%TT_L%%MM_L%%JJ_L%%hh_L%%mi_L% 
11.
rem set zeitserver=%TT_S%%MM_S%%JJ_S%%hh_S%%mi_S% 
12.
echo %zeitlokal% 
13.
rem echo %zeitserver% 
14.
::Ende Hauptprogramm 
15.
goto :eof 
16.
 
17.
:splitDateLokal 
18.
for  /f "tokens=1-5 delims=.:," %%a in ("%1.%2") do (  
19.
               set TT_L=%%a 
20.
               Set MM_L=%%b 
21.
               Set JJ_L=%%c 
22.
               Set hh_L=%%d 
23.
               Set mi_L=%%e 
24.
 
25.
26.
goto :eof 
27.
 
28.
:splitDateServer 
29.
for  /f "tokens=1-5 delims=.:," %%a in ("%1.%2") do (  
30.
               set TT_S=%%a 
31.
               Set MM_S=%%b 
32.
               Set JJ_S=%%c 
33.
               Set hh_S=%%d 
34.
               Set mi_S=%%e 
35.
36.
goto :eof
Das letzte "goto :eof" ist zwar entbehrlich (da dies nach der letzten Batchzeile automatisch ausgeführt wird), aber es schadet nicht, und wenn Du noch weitere Unterprogramme hinzufügen solltest, benötigst Du es auf jeden Fall ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
15.04.2009 um 17:04 Uhr
Moin deb10er0,

willkommen in Forum.
Ich hab es zufällig gerade vorhin hier in einem anderen Beitrag gelesen:

  • mit "call :whatever" aufgerufene Blöcke werde explizit beendet mit der Anweisung "goto :eof" in ihrer letzten Zeile
  • ebenso muss nach einer Anweisung, auf die eine zeile mit Sprungmarke folgt
01.
....{Beispiel FALSCH} 
02.
for /f "delims=" %%i in ('dir %pfad_lokal% /s /b /a-d') do call :splitDateLokal %%~ti 
03.
:splitDateLokal  
04.
...
.... eine Sprung/goto :eof-Anweisung VOR die folgende Sprungmarke.
Sonst werden diese zeilen einfach auch noch ausgeführt
(eine Zeile nach der anderen, bis das Ende des Batches erreicht ist)
01.
....{Beispiel WENIGER FALSCH} 
02.
for /f "delims=" %%i in ('dir %pfad_lokal% /s /b /a-d') do call :splitDateLokal %%~ti 
03.
: goto :Eof 
04.
 
05.
REM ~~~~ hier ist der Batch logisch am Ende; 
06.
REM ~~~~ es folgen nur noch Unter-Routinen 
07.
:splitDateLokal  
08.
...
Grüße
Biber
[Edit] Hätte mich auch gewundert, wenn ich vor bastla zu Ende getippt hätte... [/Edit]
Bitte warten ..
Mitglied: deb10er0
16.04.2009 um 08:03 Uhr
Hey, super!!
Danke hat funktioniert!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch Datei: ECHO ist ausgeschaltet (OFF) (3)

Frage von twiceface zum Thema Batch & Shell ...

Batch & Shell
gelöst Echo in Batch schreibt vorab eine 1 (1)

Frage von chappy72 zum Thema Batch & Shell ...

Batch & Shell
gelöst EQU - GLEICH - BATCH (8)

Frage von freshman2017 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (44)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (13)

Frage von aschmid zum Thema Router & Routing ...