Batch um Daten in dateinamen einzufügen und dateien rumzukopieren
29.11.2007
15:00:32 Uhr16958 Aufrufe
7 Antworten
15:00:32 Uhr
7 Antworten
Noch nicht bewertet
Guten Tag,
nachdem ich einige Zeit damit zugebracht habe eine Möglichkeit zu finden um eine Datei zu Archivieren. Dachte ich mir ich poste mein Ergebnis einfach mal um anderen das Suchen zu erleichtern........
sry wenn das evtl verwirrend ist mit den Variablen aber mit bisschen denken schafft ihr das schon dahinter zu steigen.
/edit den Code schreibt ihr in einer Textdatei (.txt) speichert diesen und ändert den dateinamen dann in <Name>.bat (ehemals <Name>.txt) um daraus eine Batch-Datei zu machen.
/edit 2 unter Windows 9x und NT werden Stapelverarbeitugnsdateien übrigens als <Name>.cmd
gespeichert.
/edit 3 %Date% liest das Datum aus fügt man hier noch werte ein z.B %DATE~3,4% dann gibt das System an Stelle 3 zwei Zeichen aus. Hierfür muss man sein Datumsformat kennen und ein wenig Zählen können und mit ein wenig geduld und herumexperimentieren bekomm man dann ein schönes Ergebnis. Das ganze funktioniert mit %TIME% übrigens genauso. Siehe in den Kommentaren für genauere Erklärung dazu.
Danke an die Kritiker wenn euch noch mehr einfällt immer her damit ich baus dann irgendwie ein.
Gruß
Lennart
nachdem ich einige Zeit damit zugebracht habe eine Möglichkeit zu finden um eine Datei zu Archivieren. Dachte ich mir ich poste mein Ergebnis einfach mal um anderen das Suchen zu erleichtern........
01.
@echo on 02.
03.
REM <Dateiname> als Variable setzen 04.
05.
set Datei=<Name> 06.
07.
REM Datum erstellen (kurzform Datum:JJJJ-MM-TT; langes Datum:T. MMM JJJJ) 08.
09.
set ARCHIVNAME=%DATE:~3,4%%DATE:~8,2%%DATE:~11,2% 10.
11.
REM Neuen Namen zusammensetzen 12.
13.
set NEU=%Datei%-%Archivname%.<Endung> 14.
15.
REM Benenne die Datei um 16.
17.
ren [Laufwerk]:\[Pfad]\<Dateiname-alt.Endung> %Neu% 18.
19.
REM Kopiere die umbenannte Datei in Verzeichnis (Archiv) 20.
21.
copy [Laufwerk]:\[Pfad]\%Neu% [Laufwerk]:\[Pfad] 22.
23.
REM Lösche alte Datei im "Aktuelle-Version-Ordner" 24.
25.
del [Laufwerk]:\[Pfad]\%Neu% 26.
27.
REM kopiere neue Datei vom Transfer-Verzeichnis 28.
copy [Laufwerk]:\[Pfad]\<Dateiname.Endung> [Laufwerk]:\[Pfad] 29.
30.
REM lösche die Datei vom Transfer 31.
del [Laufwerk]:\[Pfad]\<Dateiname.Endung>/edit den Code schreibt ihr in einer Textdatei (.txt) speichert diesen und ändert den dateinamen dann in <Name>.bat (ehemals <Name>.txt) um daraus eine Batch-Datei zu machen.
/edit 2 unter Windows 9x und NT werden Stapelverarbeitugnsdateien übrigens als <Name>.cmd
gespeichert.
/edit 3 %Date% liest das Datum aus fügt man hier noch werte ein z.B %DATE~3,4% dann gibt das System an Stelle 3 zwei Zeichen aus. Hierfür muss man sein Datumsformat kennen und ein wenig Zählen können und mit ein wenig geduld und herumexperimentieren bekomm man dann ein schönes Ergebnis. Das ganze funktioniert mit %TIME% übrigens genauso. Siehe in den Kommentaren für genauere Erklärung dazu.
Danke an die Kritiker wenn euch noch mehr einfällt immer her damit ich baus dann irgendwie ein.
Gruß
Lennart
Biber schreibt am 10.12.2007 um 07:42:22 Uhr
@LennartV
Kann mich da TuX' Kommentar durchaus anschließen, würde Dich aber bitten, gerade weil sich um eine Grundlagentutorial handelt, noch einen Hinweis zu ergänzen, dass der obige Code als Textdatei mit der Endung .bat gespeichert werden sollte.
Damit dieser Kontext klarer erkennbar ist, verschiebe ich das Tutorial mal von "Tools & Utilities" nach "Batch & Shell".
Grüße
Biber
Kann mich da TuX' Kommentar durchaus anschließen, würde Dich aber bitten, gerade weil sich um eine Grundlagentutorial handelt, noch einen Hinweis zu ergänzen, dass der obige Code als Textdatei mit der Endung .bat gespeichert werden sollte.
Damit dieser Kontext klarer erkennbar ist, verschiebe ich das Tutorial mal von "Tools & Utilities" nach "Batch & Shell".
Grüße
Biber
tom-k schreibt am 10.12.2007 um 16:42:29 Uhr
vielleicht sollte man auch noch erwähnen, daß man mit %date% das Systemdatum und mit %time% die Systemzeit bekommt.
In dem man die Variablen aneinander reiht, kann man das Ergebnis auch anpassen:
set Datum=%date:~6,4%-%date:~3,2%-%date:~0,2%
ergibt (nur heute!): 2007-12-10
Die folgende Schreibweise:
%date:~6,4%
gibt nach dem 6.Zeichen (also ab dem 7.Zeichen) die folgenden 4 Zeichen zurück. D.h. ist das Systemdatum der 10.12.2007 wird 2007 zurückgegeben.
Die folgende Schreibweise:
%time:~0,5%
gibt nach dem 0.Zeichen (also ab dem 1.Zeichen) die folgenden 5 Zeichen zurück. D.h. ist die Systemzeit "16:20:41,26" wird 16:20 zurückgegeben.
Da manche Systeme das Datum mit Wochentag und andere ohne, oder manche den Wochentag nur mit zwei Zeichen ausgeben, sind u.U. einige Anpassungen erforderlich.
Ebenso bei der Systemzeit (24Stunden) die mit führender 0 oder führendem Leerzeichen ausgegeben wird. Folgende Zeilen stellen bei Uhrzeiten kleiner 10Uhr eine 0 voran:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
set Zeit=%time:~0,5%
if %time:~0,2% gtr 9 goto Zeitgut
set Zeit=0%time:~1,1%%time:~2,3%
:Zeitgut
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
In dem man die Variablen aneinander reiht, kann man das Ergebnis auch anpassen:
set Datum=%date:~6,4%-%date:~3,2%-%date:~0,2%
ergibt (nur heute!): 2007-12-10
Die folgende Schreibweise:
%date:~6,4%
gibt nach dem 6.Zeichen (also ab dem 7.Zeichen) die folgenden 4 Zeichen zurück. D.h. ist das Systemdatum der 10.12.2007 wird 2007 zurückgegeben.
Die folgende Schreibweise:
%time:~0,5%
gibt nach dem 0.Zeichen (also ab dem 1.Zeichen) die folgenden 5 Zeichen zurück. D.h. ist die Systemzeit "16:20:41,26" wird 16:20 zurückgegeben.
Da manche Systeme das Datum mit Wochentag und andere ohne, oder manche den Wochentag nur mit zwei Zeichen ausgeben, sind u.U. einige Anpassungen erforderlich.
Ebenso bei der Systemzeit (24Stunden) die mit führender 0 oder führendem Leerzeichen ausgegeben wird. Folgende Zeilen stellen bei Uhrzeiten kleiner 10Uhr eine 0 voran:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
set Zeit=%time:~0,5%
if %time:~0,2% gtr 9 goto Zeitgut
set Zeit=0%time:~1,1%%time:~2,3%
:Zeitgut
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Geschrieben von Biber:
Mit Rücksicht auf Win9x-User, die hier ab und zu auch mal lesen, würde ich vorschlagen, dass Stapelverarbeitungsdateien, die für ein NT-System entwickelt wurden, grundsätzlich mit der Dateierweiterung .cmd gespeichert werden. Unter Win9x laufen nämlich die meisten hier gemachten Vorlagen nicht.
... gerade weil sich um ein Grundlagentutorial handelt, noch einen Hinweis zu ergänzen,
dass der obige Code als Textdatei mit der Endung .bat gespeichert werden sollte.
dass der obige Code als Textdatei mit der Endung .bat gespeichert werden sollte.
Mit Rücksicht auf Win9x-User, die hier ab und zu auch mal lesen, würde ich vorschlagen, dass Stapelverarbeitungsdateien, die für ein NT-System entwickelt wurden, grundsätzlich mit der Dateierweiterung .cmd gespeichert werden. Unter Win9x laufen nämlich die meisten hier gemachten Vorlagen nicht.















58502schreibt am 10.12.2007 um 16:48:34 Uhr