Hi Folks, wie kann ich sicherstellen, daß ein (x)copy - Befehl eine Menge von Dateien in der Reihenfolge kopiert wie sie erstellt wurden? So, das die Datei, welche zuerst erstellt wurde, später auch als erste kopiert wird. Viele Grüsse korax
Fra Nk schrieb: > wie kann ich sicherstellen, daß ein (x)copy - Befehl eine Menge von > Dateien in der Reihenfolge kopiert wie sie erstellt wurden? > So, das die Datei, welche zuerst erstellt wurde, später auch als erste > kopiert wird. ich denke es geht überhaupt nicht. Du müsstest mit dir und sortiertung eine Batchfile erzeugen und in diesen Batchfile jeden Datei einzeln mit (x)copy kopieren. Oder gleich mit einer Scriptsprache arbeiten ( Perl, WSH usw ).
Was soll das bringen? Die Sortierung im Verzeichnis hängt dann eh wieder von den freien Stellen in der Directory Struktur ab. Sortieren sollte dann die Weiterverarbeitung.
Udo Schmitt schrieb: > Was soll das bringen? Die Sortierung im Verzeichnis hängt dann eh wieder > von den freien Stellen in der Directory Struktur ab. kann das Problem verstehen, ich hatte vor kurzen ein Autoradio mit MP3 wo man die Daten auf einem USB-Stick haben kann. Dort steht extra in der anleitung das die Reihenfolge der Titel von der Kopierreihenfolge abhängig ist. Wenn ich es voher gelesen hätte, hätte ich ein anderes Radio genommen aber ausbauen wollte ich es nicht noch mal.
Udo Schmitt schrieb: > Was soll das bringen? Das Zielverzeichnis wird von einem "FileSystemWatcher" (.NET) abgehört der auf eintreffende Dateien lauert. Und diese müssen in zeitlicher Reihenfolge ankommen um richtig zugeordnet werden zu können.
Soweit ich das verstanden habe, ist robocopy der große Bruder von xcopy. Schau dir das mal an. Eventuell kann dieses Programm sowas. Ich habs bislang nicht näher angesehen. Eine Skriptsprache ist natürlich ne Option. Mit z.B. PHP sicherlich schnell gemacht.
Abdul K. schrieb: > Mit z.B. PHP sicherlich schnell gemacht. naja PHP ist nun nicht gerade die Scriptsprache für Dateioperationen. Sie ist doch sehr weborientiert. Perl ist für sotwas meiner Meinung besser geeignet.
PHP läuft einfach überall, deswegen habe ich es mir ausgesucht.
Abdul K. schrieb: > PHP läuft einfach überall, deswegen habe ich es mir ausgesucht. ich behaupt einfach mal das Perl auf mehr Platformen läuft als PHP. Für Perl gibt es extra viele erweiterungen für Administrative sachen. z.b. AD-Verwaltung. Auch kann man in Perl mit Threads arbeitet was in PHP nicht geht. PHP ist nun mal eine Scriptsprache zur erzeugung von Webseiten. Kein System verwendet PHP zur automatisierung.
Hi, noch was: Auf den Rechnern läuft Windows NT4 und ich kann nichts zusätzliches installieren. Mann kann doch For-Schleifen erstellen, nur wie lese ich das Dateierstelldatum aus? Setzen geht komischerweise.
Peter, deine Meinung in Ehren. Warum sollte ich nicht was nehmen, was ich bereits kann? PHP bekommt man bei vielen Webspaces gleich dabei. Das sieht bei anderen Sprachen eher mau aus. Nicht das ich PHP gut fände. Mich stört sowieso, das in den allermeisten Programmiersprachen die gleiche Funktion jeweils anders realisiert werden muß. Selten, das eine Sprache was besonderes könnte. Aus rein praktischer Erwägung benutze ich also PHP.
sowas könnte funktionieren: *** alles eine zeile *** FOR /F "delims=*" %%i IN (' dir /b c:\inputdir\*.mp3 ') DO call :kopieren %%i *** alles eine zeile *** pause (goto :EOF) :kopieren copy c:\inputdir\"%*" x:\outputdir (goto :EOF) ******************************************* übersicht zu NT4 CMD commands : http://www.thelenchannel.com/1dos.php
Hallo; vor einiger Zeit habe ich mir ein Tool in VB6 geschrieben, welches einer Batch-Datei das alter einer angegebenen Datei in Minuten als ERRORLEVEL zur verfügung stellt. villeicht hilft der Code dazu ja was:
1 | Declare Sub ExitProcess Lib "kernel32" ( _ |
2 | ByVal uExitCode As Long) |
3 | |
4 | |
5 | Sub MAIN() |
6 | On Error GoTo Fehler |
7 | CmdLine = Command() |
8 | |
9 | If CmdLine = "" Or InStr(1, CmdLine, "/?") <> 0 Then |
10 | |
11 | MsgBox "Bitte geben sie beim Programaufruf an der Komandozeile einen Dateinamen an - ein ''@'' vor dem Dateinamen gibt an, dass der eigentliche Dateiname an Zeile 1 in dieser Datei steht; Das Alter der Datei in Minuten wird als Errorlevel an Batchfiles übergeben." |
12 | End
|
13 | |
14 | End If |
15 | |
16 | If Left(CmdLine, 1) = "@" Then |
17 | Open CmdLine For Input As #1 |
18 | Line Input #1, FirstLine |
19 | TheFile = FirstLine |
20 | Close
|
21 | Else
|
22 | TheFile = CmdLine |
23 | |
24 | End If |
25 | |
26 | Aenderung = FileDateTime(TheFile) |
27 | ExitProcess Abs(Val(DateDiff("n", Aenderung, Now, vbUseSystem, vbUseSystem))) |
28 | |
29 | End
|
30 | |
31 | |
32 | Fehler: |
33 | ExitProcess -1 |
34 | |
35 | |
36 | End Sub |
MFG:MBP Markus
miks schrieb: > sowas könnte funktionieren: > > *** alles eine zeile *** > FOR /F "delims=*" %%i IN (' dir /b c:\inputdir\*.mp3 ') > DO call :kopieren %%i > *** alles eine zeile *** > > pause > (goto :EOF) > > > :kopieren > copy c:\inputdir\"%*" x:\outputdir > (goto :EOF) > > ******************************************* > > übersicht zu NT4 CMD commands : > http://www.thelenchannel.com/1dos.php Hi miks, ich habe Deinen Code um den parameter /o:d erweitert - und es läuft!
1 | dir /b /o:d |
Dein Code + Nachschlagen im von Dir gezeigtem Link haben mir sehr geholfen. Vielen Dank!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.