PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DOS - Frage an die Methusalems ;)



Daen vom Clan
25.06.2008, 09:38
Moin werte Community,
mal eine Frage aus der guten alten Dos-Zeit.

Ich würde gerne ein Batch-File schreiben das bestimmte täglich generierte Inhalte für den jeweiligen Tag in einen anderen Ordner kopiert.
Problem dabei ist: Es sollen nur die Daten des jeweiligen, heutigen Tages kopiert werden.

Kann mir jemand spontan sagen wie die Syntax dazu lauten könnte?
vielen Dank und beste Grüße :)

Brauni90
26.06.2008, 12:56
Tach.
Muss es denn zwingend ein Batch-File sein, denn ich weiß nicht ganz genau was damit machbar ist. Ansonsten könnte ich dir was aus der Richtung .NET anbieten.
Btw: Welches Betriebssystem?

edit: Nutzt du wirklich DOS oder bezieht sich das nur auf Batch-File?

Gruß Brauni

Manuel
26.06.2008, 15:38
In meiner Arbeit habe ich einen dicken DOS-Wälzer, aber leider keine Referenz o.Ä. gefunden, wie man das Datum einer File per Batch auslesen kann :( .

Vielleicht wäre ein möglicher Umweg über QBasic möglich, das ja auch DOS-Executables erstellen kann? Wenn du willst, schreibe ich gern so ein Programm, was genanntes vollbringt und übermittle auch problemlos den Quelltext... QBasic kann zwar nicht wirklich was mit Attributen von Dateien anfangen, aber es kann zumindest problemlos String-Manipulationen und -Auswertungen vornehmen...

Brauni90
26.06.2008, 17:48
Ich habe hier mal was zusammengebastelt, kenn mich aber nicht wirklich mit "Batch" aus:

Main.bat
--------------------------------------------------
@echo off

set quelle=C:\Quelle\
set ziel=C:\Ziel\
set tag=%date:~0,2%

if not exist %ziel% md %ziel%

for /R %quelle% %%d in (*.*) do (
call Copy.bat %%d %ziel% %tag%
)

pause
--------------------------------------------------

Copy.bat
--------------------------------------------------
@echo off

REM Parameter1 : Quelldatei
REM Parameter2 : Zielverzeichnis
REM Parameter3 : Tag

set tag=%~t1
set tag=%tag:~0,2%

if %3==%tag% (
set ziel=%2%~n1%~x1
copy %1 %ziel% > NUL
)
--------------------------------------------------

Aus irgendeinem mir momentan noch schleierhaftem Grund will das nicht funktionieren. Vielleicht kann das durch ein paar Modifikationen noch funktiontüchtig werden ;) .

Gruß Brauni

Daen vom Clan
28.06.2008, 10:36
Vielen Dank soweit schonmal, aber ich denke ich muss das Ganze mal relativieren. Es geht im Grunde "nur" darum einen Automatismus zu schaffen einen Ordner der an einem bestimmten Tag erstellt wurde regelmäßig wegzukopieren.
Also Ordner xy220608 an 22., dne Ordner xy230608 am 23. und so weiter.

Ich bin nur deswegen auf ein executable File gekommen weil ich es in den Scheduler einbauen wollte.
Aber wenn Einer von euch eine bessere, elegantere Methode kennt, immer her damit :)

Daen vom Clan
09.07.2008, 08:44
Niemand eine Idee, möglich ist jede beliebige Software die das bieten kann? :)

DFYX
10.07.2008, 15:45
OK, wenn dem armen Daen keiner hilft, probier ich mal, ob ich in C/C++ was zusammengeschrieben krieg.

jwiechers
10.07.2008, 18:44
XCOPY QUELLPFAD\*.* ZIELPFAD /M

Daen vom Clan
10.07.2008, 19:31
XCOPY QUELLPFAD\*.* ZIELPFAD /M

Hm, was hat das Archivattribut damit zu tun , Jens, oder verstehe ich das grade falsch?
Bei /d habe ich meiner Meinung nach auch was falsch gemacht, das sollte nämlich damit funktionieren...



DFYX: Das wäre klasse, vielen Dank :)

DFYX
10.07.2008, 22:25
So, ich hoffe, ich hab alles richtig verstanden.

backup.exe [-q] SOURCE [DESTINATION]
Das Programm durchsucht den Ordner, der als SOURCE angegeben wird nach Dateien, die am gleichen Tag erstellt wurden und kopiert sie in einen Unterordner von DESTINATION, der im Format YYMMDD automatisch angelegt wird, falls er nicht existiert. Falls DESTINATION nicht angegeben wird, wird der SOURCE Ordner verwendet. Mit -q lassen sich die Statusmeldungen unterdrücken.

Download (http://www.wecallit42.de/temp/backup.zip)
Der Quelltext und eine DLL, von der ich mir nicht zu 100% sicher bin, ob sie gebraucht wird, liegen bei. Das ganze verwendet glibc, sollte dementsprechend also auch auf unixartigen Betriebssystemen compilierbar sein.

jwiechers
11.07.2008, 15:00
Das Attribut /M kopiert nur neue Dateien. Ich hatte gedacht, dass du das moechtest.