vlasak
Goto Top

dateien automatisch kopieren lassen

über eine BAT-Datei die Datei autmatisch kopieren lassen. Mein Problem ist jetzt das er die neue Datei immer wieder überschreibt.

hallo...

ich habe eine log-file die ich nach jedem neustart in ein bestimmtes Verzeichnis automatisch kopiert haben will. Nun habe ich eine BAT Datei erstellt mit dem folgendem Code:

copy C:\logfile.log D:\logfile_%DATE%_.log

So habe ich von jedem Tag eine logfile kopiert aber ich brauche an einem Tag mehrere und so überschreibt er sie am Tag. Kann mit jemand helfen?
Danke im vorraus..

Content-Key: 9453

Url: https://administrator.de/contentid/9453

Printed on: April 25, 2024 at 05:04 o'clock

Member: Atti58
Atti58 Apr 14, 2005 at 08:51:39 (UTC)
Goto Top
... ganz einfach:

copy C:\logfile.log D:\logfile_%DATE%_%TIME%.log

Gruß

Atti
Member: vlasak
vlasak Apr 14, 2005 at 08:56:19 (UTC)
Goto Top
die Idee hatte ich auch schon aber bringt leider nichts:

SYNTAXFEHLER ist das Ergebnis aber trotzdem danke
Member: vlasak
vlasak Apr 14, 2005 at 08:56:32 (UTC)
Goto Top
Member: gemini
gemini Apr 14, 2005 at 09:10:33 (UTC)
Goto Top
SYNTAXFEHLER ist das Ergebnis aber trotzdem danke

Wahrscheinlich stören die Doppelpunkte in %TIME%

Du könntest in einer Schleife mit IFEXIST prüfen ob der Dateiname vorhanden ist.
Wenn ja, dann beim nächsten Schleifendurchlauf einen Zähler anhängen.
Die Schleife muss dann solange laufen bis IFEXIST False wird.
Member: vlasak
vlasak Apr 14, 2005 at 09:19:52 (UTC)
Goto Top
bitte ausführlicher erklären. Das ist net ganz mein Fachgebiet IFEXIST sagt mir gar nix. Tut mir leid kann aber damit nix anfangen.

Die Zeit ist mir eigentlich auch egal mein eigentliches Ziel ist es das ich bei jedem Start des BAT eine Datei bekomme ohne die vorige zu überschreiben...

Trotzdem Danke...
Member: gemini
gemini Apr 14, 2005 at 20:26:58 (UTC)
Goto Top
Speichere das mit der Endung .vbs ab und führe es mal aus (ich habs nicht getestet)
Die Pfade und Dateinamen musst du natürlich noch anpassen.

~~~~~~~~~~~~~~~~~~~~~~~~~~
'CopyLogfile.vbs
Option Explicit

' Variablendeklaration
Dim objFSO, objFile
Dim strSrcDir, strDstDir, strLogFile, i, strExt

' Variablen belegen
strSrcDir = "C:\Windows\Test" ' Das Quelllog _ohne_ Erweiterung
strDstDir = "C:\Test" ' Das Ziellog _ohne_ Erweiterung
strExt = ".log" ' Die Dateierweiterung

' Startwerte
strLogFile = strDstDir & strExt
i = 1

' Objekte erzeugen
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")

' Quelldatei laden
Set objFile = objFSO.GetFile(strSrcDir & strExt)

' Schleife prüft, ob der Dateiname existiert
' 1. Durchlauf: Test.log
' 2. Durchlauf: Test_1.log usw
Do Until objFSO.FileExists(strLogFile)
strLogFile = strDstDir & "_" & i & strExt
i = i + 1
Loop

' Unter dem ersten freien Dateinamen wird kopiert
objFile.Copy(strLogFile)
~~~~~~~~~~~~~~~~~~~~~~~~~~

Hilfreiche Links:
http://www.microsoft.com/germany/technet/datenbank/articles/600327.mspx
http://www.microsoft.com/technet/scriptcenter/default.mspx
Member: vlasak
vlasak Apr 15, 2005 at 07:21:46 (UTC)
Goto Top
hmmm... klappt irgendwie nicht...
trotzdem danke
Member: gemini
gemini Apr 15, 2005 at 10:32:06 (UTC)
Goto Top
So, jetzt sollte es funktionieren. Bei mir tuts zumindest
Das kommt davon, wenn man sowas schnell hinklopft.
Der Unterschied zwischen Until und While ist mir normalerweise schon geläufig face-wink
~~~~~~~~~~~~~~~~~~
'CopyLogfile.vbs
Option Explicit

' Variablendeklaration
Dim objFSO, objFile
Dim strSrcDir, strDstDir, strLogFile, i, strExt

' Variablen belegen
strSrcDir = "H:\Test\Log" ' Das Quelllog _ohne_ Erweiterung
strDstDir = "H:\Test1\Log" ' Das Ziellog _ohne_ Erweiterung
strExt = ".log" ' Die Dateierweiterung

' Startwerte
strLogFile = strDstDir & strExt
i = 1

' Objekte erzeugen
Set objFSO = CreateObject("Scripting.FileSystemObject")

' Schleife prüft, ob der Dateiname existiert
' 1. Durchlauf: Test.log
' 2. Durchlauf: Test_1.log usw
Do While objFSO.FileExists(strLogFile)
strLogFile = strDstDir & "_" & i & strExt
i = i + 1
Loop

' Unter dem ersten freien Dateinamen wird kopiert
objFSO.CopyFile strSrcDir & strExt, strLogFile, False
~~~~~~~~~~~~~~~~~~
Member: vlasak
vlasak Apr 15, 2005 at 10:47:20 (UTC)
Goto Top
SUPER ES KLAPPT...
Man du bist der beste. Ich dachte schon das wird niemals klappen.
Ich danke dir gemini
Member: dubt
dubt Jan 17, 2006 at 15:39:53 (UTC)
Goto Top
hallo,
ich habe einen Batch geschreiben der mir eine Datei kopiert und das Datum anhängt, klappt einwandfrei,
nun möchte ich diesen batch einmal wöchentlich , z. Bsp immer Sonntags um 22:00 Uhr laufen lassen

Mein Batch besteht bisher nur aus einer Zeile .

copy liste.txt d:\backup\liste_%date%.txt

Diesen Batch starte ich bisher manuell. Wie kann ich einen Wochentag und eine Uhrzeit mitgeben ???
Vielen Dank vorab face-smile Dubt
Member: Biber
Biber Jan 17, 2006 at 17:11:01 (UTC)
Goto Top
Moin dubt,
willkommen im Forum.
Je nach Betriebssystem bzw. Windows-Version sind unterschiedliche Antworten richtig.
Da wir das bei Dir nicht wissen, könnten Lösungsansätze sein:

a) das M$-Utility At.exe
"at 20:00 /Every:So c:\dubts\unknown.bat" am CMD-Prompt eingeben

b) der M$-Nachfolger namens "Schtasks.exe" nach dem selben Muster
Das ist nicht von einem lispelnden Programmierer geschrieben wurden, sondern soll wohl "Scheduled Tasks"/"Verspätete Aufgaben" heißen.
Im "deutschen" Windows heißen die beiden Winzprogrämmchen "Befehlszeilen-Zeitplanungstools".
Hätten die "tools" auch übersetzt, wäre es noch länger *gg

c) über Klicki-Bunti geht es auch mit dem so genannten "Taskplaner" (siehe Windows-Hilfe)

d) über Fremdtools ...lasse ich mal weg.
Lohnt nicht für diese Aufgabe, 1x die Woche einen Batch aufzurufen.

Such also in Deiner Windows-Hilfe nach "Befehlszeilen-Zeitplanungstool". dann wirst Du die bei Dir mitgelieferte Variante finden.

HTH Biber
Member: dubt
dubt Feb 08, 2006 at 14:32:19 (UTC)
Goto Top
hallo Biber,
vielen Dank für die Antwort,
hatte letzte Zeit viel zu tun, habe allerdings deinen Vorschlag noch nicht umgesetzt

gruss aus KArben