Leerzeichen aus Datumsvariable entfernen
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:
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:
echo off & setlocal
cd \c:
rem Batchprogramm testen der Xcopy-Funktion bzgl. eines >Verzerzeichniss
rem incl. Unterverzeichnissen
cls
goto datum
echo Zielordner erstellen
if not exist %zieldir% md %zieldir%
xcopy "c:\Dokumente und Einstellungen\Brenner\Eigene Dateien" %Zieldir% /S /E /I /H /V /Y
rem /S = kopiert das angegebene und alle darunter befindlichen
rem /E = kopiert alle Unterverzeichnisse (Leer oder nicht leer)
rem /I = neuen Ordner anlegen, falls nicht vorhanden
rem /H = kopiert auch Dateien mit den Attributen 'Versteckt' und 'System'
rem /V = Ueberprueft jede neue Datei auf Korrektheit
rem /Y = Dateien ohne Nachfragen berschreiben
if errorlevel 1 goto Error
goto Ende
:Error
echo das kopieren war nicht erfolgreich!
: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%
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106465
Url: https://administrator.de/contentid/106465
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Prian0815!
Woher die Leerzeichen kommen kann ich zwar nicht nachvollziehen, aber die Zeile zum Entfernen sollte so aussehen:
Wenn Du ":Datum" als Unterprogramm aufrufen willst, musst Du das auch tun, und nicht einfach per "goto" dort hin springen:
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
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
Hallo Prian0815!
Hinsichtlich der Leerzeichen kann ich leider nichts beitragen, da diese bei mir gar nicht erst auftauchen ...
Zum "xcopy" noch einige Anmerkungen:
Grüße
bastla
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
Moin prian0815 und bastla,
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):
Die eckigen Klammern [.. ] unten habe ich zur Visualisierung ergänzt-
Mit den originalen Leerzeichen statt der sichtbaren Unterstriche kommt heraus:
{ 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:
Beispiel.
Grüße
Biber
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%]
Mit den originalen Leerzeichen statt der sichtbaren Unterstriche kommt heraus:
datum: [1.09 .9. .19 ]
zieldir: ["c:\Ziel_xcoptest"1.09 .9. .19 ]
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.
....
Set "jahr=%date:~-4%"
set "mon=%date:~-7,2%"
set "tag=%date:~-10,2%"
....
Grüße
Biber