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

Leerzeichen aus Datumsvariable entfernen

Frage Entwicklung Batch & Shell

Mitglied: Prian0815

Prian0815 (Level 1) - Jetzt verbinden

19.01.2009, aktualisiert 18.10.2012, 4590 Aufrufe, 5 Kommentare

Hallo liebes Team,
ich bin hier schon den halben Tag am ausprobieren und rumsuchen, komme aber nicht wirklich weiter im Moment, deshalb hier nun doch die Fragestellung. Folögendes selbstgewähltes Übungsprog will ich erstellen: Ich mäöchte ein letzte Woche erstelletes Tesatprog mit Xcopy dahingehend ändern, dass der angegebene Ordner in den gesichert wird das Datum des aktuellen Tages am Ende aufweißt. Dabei war mir das Forum hier schon mal ne große Hilfe. allerdings habe ich nun festgestellt, dass das %Datum% in meinem Code nach den beiden Pubkten je ein Leerzeichen enthält, welche ich nicht um viel wegbringe. Zudem ist mir aufgefallen, dass zwar in das Upro :Datum gesprungen wird, die Abarbeitung des Progs aber nach dem Ende von :Datum nicht beri dem Befehl nach Goto weitermacht. Ich hab im Mom auch keinen blassen Schimmmer, was ich wo angeben muß um zur rufenden Befehlszeile ziurückzukehren. Ich hoffe einem lernenden kann hier geholfen werden und bedanke mich hierfür schon mal im Vorraus.

Grüße Prian
jetzt hätt ich doch fast noch meinen bisherigen Code vergessen:

01.
echo off & setlocal  
02.
cd \c: 
03.
rem Batchprogramm testen der Xcopy-Funktion bzgl. eines >Verzerzeichniss 
04.
rem incl. Unterverzeichnissen 
05.
cls 
06.
goto datum 
07.
echo Zielordner erstellen 
08.
if not exist %zieldir% md %zieldir% 
09.
 
10.
xcopy "c:\Dokumente und Einstellungen\Brenner\Eigene Dateien" %Zieldir% /S /E /I /H /V /Y 
11.
rem /S = kopiert das angegebene und alle darunter befindlichen 
12.
rem /E = kopiert alle Unterverzeichnisse (Leer oder nicht leer) 
13.
rem /I = neuen Ordner anlegen, falls nicht vorhanden 
14.
rem /H = kopiert auch Dateien mit den Attributen 'Versteckt' und 'System' 
15.
rem /V = Ueberprueft jede neue Datei auf Korrektheit 
16.
rem /Y = Dateien ohne Nachfragen berschreiben 
17.
if errorlevel 1 goto Error 
18.
goto Ende 
19.
 
20.
:Error 
21.
echo das kopieren war nicht erfolgreich! 
22.
 
23.
:Datum 
24.
set jahr=%date:~-4%  
25.
set mon=%date:~-7,2%  
26.
set tag=%date:~-10,2%  
27.
set datum=%jahr%.%mon%.%tag% 
28.
set datum=%datum:" "=""% 
29.
set zieldir="c:\Ziel_xcoptest"%datum% 
30.
echo datum: %datum% 
31.
echo zieldir: %zieldir%
Mitglied: bastla
19.01.2009 um 15:33 Uhr
Hallo Prian0815!

Woher die Leerzeichen kommen kann ich zwar nicht nachvollziehen, aber die Zeile zum Entfernen sollte so aussehen:
set "datum=%datum: =%"
Wenn Du ":Datum" als Unterprogramm aufrufen willst, musst Du das auch tun, und nicht einfach per "goto" dort hin springen:
call :Datum
Außerdem solltest Du das Hauptprogramm ordentlich beenden: Ersetze dazu "goto Ende" durch "goto :eof" und setze ein weiteres "goto :eof" an das Ende des ":Error"-Teiles (also in die derzeitige Zeile 22).

Grüße
bastla
Bitte warten ..
Mitglied: Prian0815
19.01.2009 um 16:08 Uhr
herzlichen Dank dir Bastla,
immer diese kleinen aber feinen Startschwierigkeiten. An einen Call hätte ich von allein wahrscheinlich nie gedacht, obwohl das ja nun absolut logisch ist uind sein sollte. Und was das Beenden mit goto :eof anbetrifft, vor allem am Ende des Error-Teils hast du natürlich vollkommen recht.
Nachvollziehen, kann ich zum einen nicht wo er die Leerzeichen überhaupts hernimmt, und zum anderen, warum er diese nun nicht entfernt, wenn ich das Prog mit Echo on laufen lasse . oder sieht das da nur so aus. bei einrem lauf mit echo off war auf jeden Fall alles in Ordnung. Hier für alle interesierten noch der Code

01.
echo off & setlocal  
02.
cd \c: 
03.
rem Batchprogramm testen der Xcopy-Funktion bzgl. eines >Verzerzeichniss 
04.
rem incl. Unterverzeichnissen 
05.
cls 
06.
call :datum 
07.
echo Zielordner erstellen 
08.
if not exist %zieldir% md %zieldir% 
09.
 
10.
xcopy "c:\Dokumente und Einstellungen\Brenner\Eigene Dateien" %Zieldir% /S /E /I /H /V /Y 
11.
rem /S = kopiert das angegebene und alle darunter befindlichen 
12.
rem /E = kopiert alle Unterverzeichnisse (Leer oder nicht leer) 
13.
rem /I = neuen Ordner anlegen, falls nicht vorhanden 
14.
rem /H = kopiert auch Dateien mit den Attributen 'Versteckt' und 'System' 
15.
rem /V = Ueberprueft jede neue Datei auf Korrektheit 
16.
rem /Y = Dateien ohne Nachfragen berschreiben 
17.
if errorlevel 1 goto Error 
18.
goto Ende 
19.
 
20.
:Error 
21.
echo das kopieren war nicht erfolgreich! 
22.
 
23.
:Datum 
24.
set jahr=%date:~-4%  
25.
set mon=%date:~-7,2%  
26.
set tag=%date:~-10,2%  
27.
set datum=%jahr%.%mon%.%tag% 
28.
set "datum=%datum: =%" 
29.
set zieldir="c:\Ziel_xcoptest"%datum% 
30.
echo datum: %datum% 
31.
echo zieldir: %zieldir% 
32.
 
Gruß Prian
Bitte warten ..
Mitglied: bastla
19.01.2009, aktualisiert 18.10.2012
Hallo Prian0815!

Hinsichtlich der Leerzeichen kann ich leider nichts beitragen, da diese bei mir gar nicht erst auftauchen ...

Zum "xcopy" noch einige Anmerkungen:
  • Den Zielordner musst Du nicht vorweg erstellen - im Gegensatz zu "copy" macht "xcopy" das bei Bedarf selbst.
  • Wenn Du "/e" verwendest, ist "/s" inkludiert.
  • Anstelle von "/i" kannst Du einfach "%Zieldir%\" schreiben.
  • "/v" kannst Du, lt gewöhnlich bestens informierten Quellen , ebenfalls weglassen.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
19.01.2009 um 16:24 Uhr
Moin prian0815 und bastla,

Woher die Leerzeichen kommen kann ich zwar nicht nachvollziehen...
Aber ich.
Es sind wieder unbeabsichtigte trailing blanks hinter die eigentliche Variablenzuweisung mit SET geraten.
Und zwar hier (ich deute so ein Leerzeichen mal als Unterstrich an):

.... 
:Datum 
set jahr=%date:~-4%_ 
set mon=%date:~-7,2%_ 
set tag=%date:~-10,2%_ 
set datum=%jahr%.%mon%.%tag% 
set datum=%datum:" "=""% 
set zieldir="c:\Ziel_xcoptest"%datum% 
echo datum: [%datum%]  
echo zieldir: [%zieldir%]
Die eckigen Klammern [.. ] unten habe ich zur Visualisierung ergänzt-
Mit den originalen Leerzeichen statt der sichtbaren Unterstriche kommt heraus:
01.
datum: [1.09 .9. .19 ] 
02.
zieldir: ["c:\Ziel_xcoptest"1.09 .9. .19 ]
{ wobei ich hier nur auf die Leerzeichen-Problematik eingehen will.
Den Hauptpart hat bastla schon erledigt.}

Abhilfe, mit der ich spürbar weniger Probleme habe:
  • Die SET-Zuweisungen explizit mit einem Anführungszeichen VOR der Variablen beginnen
  • und einem Anführungszeichen nach dem Value/dem zugewiesenen Wert abschliessen.

Beispiel.
01.
.... 
02.
Set "jahr=%date:~-4%" 
03.
set "mon=%date:~-7,2%"  
04.
set "tag=%date:~-10,2%" 
05.
....
Grüße
Biber
Bitte warten ..
Mitglied: Prian0815
20.01.2009 um 09:54 Uhr
Hallo Biber,
auch dir meinen herzlichen Dank für die Aufklärung und die Variante, zur Abhilfe, welche auch mir sehr gut gefällt, allein schon, weil's somit ein Befehl weniger zum ausführen ist. Somit habe ich erneut von deinen Kenntnissen priofitieren dürfen, wie ich das zur Zeit durch das Studium deines Workshops "Batch for Runaways " eh ständig machhe.

Mit herzlichen Grüßen Prian - the Newbie (or Runaway)
Bitte warten ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
Batch & Shell
gelöst Leerzeichen per Batch entfernen vor der Weiterbearbeitung (3)

Frage von daHartl zum Thema Batch & Shell ...

Windows Server
gelöst DirectAccess Einstellungen im AD entfernen (3)

Frage von Neukunde zum Thema Windows Server ...

Outlook & Mail
Outlook 2016 - Entfernen des Löschbuttons in Nachrichtenzeile (1)

Frage von ArnoNymous zum Thema Outlook & Mail ...

Windows 7
gelöst Windows Explorer, wie untere Infoleiste entfernen? (2)

Frage von Server4Alle zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Windows Server
SBS 2011 Standard virtualisieren (14)

Frage von HeinrichM zum Thema Windows Server ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...