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, 4588 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

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

Frage von daHartl zum Thema Batch & Shell ...

Microsoft Office
gelöst Dropdownlisten in Abhängigkeit mit Leerzeichen im Namen (Datenüberprüfung) (2)

Frage von kevische zum Thema Microsoft Office ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

CPU, RAM, Mainboards
CPU Lüfter von CPU entfernen (6)

Frage von uridium69 zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...