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, 3381 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

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

Frage von chappy72 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: (at)set und (at)echo in For-Schleifen? und mehr (8)

Frage von Ben.Blake.79 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch (Win7): Kombinierte Ausgabe mit echo? (1)

Frage von Ben.Blake.79 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

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

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...