Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jürgen Gast
|
Verfasst am: 21.09.2004, 19:34 Titel: xcopy Problem |
|
|
Hi,
ich möchte Daten sichern, die laufend akualisiert werden. Es sind also immer die gleichen Dateien, nur die Grösse verändert sich demensprechend. Jetzt möchte ich ein Batchprogramm erstellen, der eine Datensicherung erstellt mit dem aktuellen Datum z.B. md X:\BACKUP\DATUM
Die Batchdatei soll also ein neuen Ordner auf LW X erstellen. Jedesmal wenn diese Batchddatei ausgeführt wird, gibt es ein neues Verzeichnis (das dann die Daten erhält) mit dem aktuellen Datum. Das sollte doch eigentlich machbar sein. Hat jemand einen Vorschlag?
Gruß
Jürgen |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 21.09.2004, 22:34 Titel: |
|
|
Wie wäre ein QBasic-Programm wie dieses:
rootdir$= "x:\backup"
datedir$ = "\"+MID$(date$, 4, 2) + "-" + LEFT$(date$, 2) + "-" + RIGHT$(date$,2)
verzeichnis$ = rootir$+datedir$
mkdir verzeichnis$ 'Verzeichnis erstellen
shell "XCopy blabla "+ verzeichnis$ _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Gast
|
Verfasst am: 21.09.2004, 23:20 Titel: |
|
|
erstmal vielen Dank für deine schnelle Hilfe.
Wenn du mir netterweise erklären kannst, was die Variable datedir$ genau anrichtet, dann bin ich mehr als dankbar. Also das sind über 80 Dateien, die sich in mehreren Ordner befinden. Die sollen dann bei jedem Aufruf des Programms unter Windows NT in den neuen Ordner (die als Ordnername das momentane Datum erhalten soll) geschrieben werden.
Leider kenne ich mich nur mit der Batchprogrammierung etwas aus und daher ist das teilweise Neuland für mich.
Vielen Dank nochmal
Jürgen |
|
Nach oben |
|
|
Gast
|
Verfasst am: 21.09.2004, 23:24 Titel: |
|
|
In DATE$ steht das aktuelle Datum.
In dem Code von MisterD wird das auseinandergenommen und in der Reihenfolge Tag-Monat-Jahr wieder zusammengesetzt. |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 22.09.2004, 14:26 Titel: |
|
|
mal angenommen DATE$ gibt dir den Wert 9-24-2004 (englisches Datum, Jahr vierstellig) oder so was, dann ist datedir$ = 24-9-04 (deutsches Datum, Länge auf 8 Stellen reduziert -> Jahr nur noch 2stellig) ok?
wenn du 80 Dateien hast musst du da, wo bei mir im Moment shell
"XCopy blabla "+ verzeichnis$
steht einfach "nur"
"XCopy c:\dir\datei1.erw "+ verzeichnis$
"XCopy c:\dir\datei2.erw "+ verzeichnis$
"XCopy c:\dir\datei3.erw "+ verzeichnis$
"XCopy c:\dir\datei4.erw "+ verzeichnis$
"XCopy c:\dir\datei5.erw "+ verzeichnis$
"XCopy c:\dir\datei6.erw "+ verzeichnis$
"XCopy c:\dir\datei7.erw "+ verzeichnis$
....
"XCopy c:\dir\datei80.erw "+ verzeichnis$
draus machen.. c:\dir\datei1.erw ist dann halt zB. C:\Word\Test.doc, c:\dir\datei2.erw ist die nächste zu kopierende Datei..
Aber mal was anderes: Wenn du einfach nur die Dateien kopierst reicht doch auch Copy, oder? Wenn XCopy ganze Verzeichnisse kopiert reicht auch ein SHELL"XCopy c:\dir " + verzeichnis$ _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Gast
|
Verfasst am: 22.09.2004, 18:55 Titel: |
|
|
ihr seid echt Granaten. Vielen Dank.
Leider funzt das ned so ..
Habe jetzt folgendes Programm erstellt:
rootdir$ = "f:\backup"
datedir$ = "\"+MID$(date$, 4, 2) + "-" + LEFT$(date$, 2) + "-" + RIGHT$(date$,2)
verzeichnis$ = rootir$ + datedir$
mkdir verzeichnis$
shell"XCopy f:\Export001\bulk01.say" + verzeichnis$
shell"XCopy f:\Export001\bulk02.say" + verzeichnis$
...
...
shell"XCopy f:\Export001\bulk80.say" + verzeichnis$
Jetzt arbeitet er 'ne Weile und dann ist auf einmal ein leerer Ordner mit dem Namen verzeichnis$ erstellt worden - was ist falsch gelaufen?
Ach ja, ich habe die Datei test.bat genannt und auf der WindowsNT Oberfläche gestartet - das ist doch richtig, oder?
Später wollte ich mir dann eine Schleife bauen, die von bulk01 bis bulk80 läuft und jede Datei auf ein USB-Memorystick kopiert. Wobei das wirklich noch Zukunftsmusik ist. Ich bekomme ja ned einmal das hier zum laufen
vielen Dank noch einmal
Thorgal |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 22.09.2004, 20:22 Titel: |
|
|
shell"XCopy f:\Export001\bulk01.say" + verzeichnis$
da muss ein Leerzeichen dazu. Was du jetzt machst ist
XCopy f:\export\bulk01.sayf:\backup\datumsordner
das muss aber
XCopy f:\export\bulk01.say f:\backup\datumsordner
heißen.
Also
shell"XCopy f:\Export001\bulk01.say " + verzeichnis$ _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Gast
|
Verfasst am: 22.09.2004, 20:54 Titel: |
|
|
sorry, vielleicht bin ich zu blöde - aber dein Post kann ich nicht nachvollziehen.
Das habe ich jetzt genauso in die Datei geschrieben:
rootdir$ = "f:\backup"
datedir$ = "\"+MID$(date$, 4, 2) + "-" + LEFT$(date$, 2) + "-" + RIGHT$(date$,2)
verzeichnis$ = rootir$ + datedir$
mkdir verzeichnis$
shell"XCopy f:\Export001\bulk01.say" + verzeichnis$
shell"XCopy f:\Export001\bulk02.say" + verzeichnis$
...
...
shell"XCopy f:\Export001\bulk80.say" + verzeichnis$
Ich starte das Programm und dann wird ein Verzeichnis namens verzeichni$ geschrieben, aber ohne Dateien. Ich verstehe die Zeilen schon, aber irgendwie funzt es ned. Erst definierst du die Variablen rootdir$ und datedir$ und dann weist du Ihnen die Variable verzeichnis$ zu. Aber irgendwie schreibt er nur ein Verzeichnis mit dem Namen Verzeichnis$
Zitat: | Also
shell"XCopy f:\Export001\bulk01.say " + verzeichnis$
|
Aber das habe ich doch genauso gemacht, oder ned?
verzweifelt
Jürgen |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 22.09.2004, 20:57 Titel: |
|
|
Nein, es fehlt das leerzeichen:
shell"XCopy f:\Export001\bulk01.say " + verzeichnis$
^
Übringends, mit
shell"XCopy f:\Export001\bulk*.say " + verzeichnis$
wird alles kopiert . |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 22.09.2004, 21:03 Titel: Ähm? |
|
|
Hallo.
Ich glaube dem Problem auf die Schliche gekommen zu sein!
Zitat: | Ach ja, ich habe die Datei test.bat genannt und auf der WindowsNT Oberfläche gestartet - das ist doch richtig, oder? |
Das Ganze hier ist doch keine Batchprogrammierung, du Held...
Die ganzen Codebeispiele sind für QBasic! Die kannst du doch nicht einfach in eine Textdatei kopieren, BAT als Endung nehmen und dann hoffen, dass es geht... Diese Programmbeispiele musst du zu einer EXE Datei kompilieren.
Klar, bei einer Batchdatei bewirkt
dass ein Verzeichnis mit dem Namen verzeichnis$ erstellt wird...
Ist das denn noch keinem aufgefallen?!
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Zuletzt bearbeitet von Sebastian am 22.09.2004, 21:14, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 22.09.2004, 21:07 Titel: |
|
|
Wenn ich ehrlich bin, habe ich das übersehen... |
|
Nach oben |
|
|
Gast
|
Verfasst am: 24.09.2004, 17:05 Titel: |
|
|
So, jetzt habe ich ein kleine QBasic Programm gebaut und eine Test.exe daraus gemacht. Ich wollte Probeweise nur 2 Dateien (in diesem Fall Bilder) kopieren.
Der code sieht so aus:
Code: |
rootdir$ = "f:\backup"
datedir$ = "\" + MID$(DATE$, 4, 2) + "-" + LEFT$(DATE$, 2) + "-" + RIGHT$(DATE$, 2)
verzeichnis$ = rootdir$ + datedir$
MKDIR verzeichnis$
SHELL "XCopy f:\Bilder\Palm1.jpg + verzeichnis$"
SHELL "XCopy f:\Bilder\Palm2.jpg + verzeichnis$"
|
Jetzt bin ich auch halbwegs glücklich. Bis auf die Tatsache, dass er zwar einen Ordner mit dem richtigen Datum erstellt aber leider sind die Bilder ned drinnen und dann macht er auch zusätzlich einen ebenfalls leeren Ordner namens "verzeichnis$" im dem Verzeichnis, wo ich die test.exe Datei ausführe.
Das ist irgendwie unbefriedigend.
Ach ja, wenn die Datei im Compiler ausführe dann erhalte ich eine Fehlermeldung "Pfad/Datei-Zugriffsfehler" - woran liegt das denn nun? Ich habe das Betriebssystem WinXP.
Lieber Gruß
Jürgen |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 24.09.2004, 17:14 Titel: So |
|
|
Hallo.
1. Im Compiler ausführen...
Im Compiler kannst du keine Programme ausführen. Der Compiler (BC.EXE) macht aus BAS-Dateien OBJ-Dateien. Die Programme führst du in der IDE bzw. dem Interpreter aus.
Das wird daran liegen, dass das Verzeichnis im Compilerverzeichnis schon existiert. Dann erzeugt MKDIR einen Fehler. Denn bei der ersten Ausführung am Tag wird das Verzeichnis schon erstellt und bleibt.
2. Benutz anstelle von XCOPY einfach COPY.
Ich drück dir die Daumen, dass es dann geht.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Jürgen
Anmeldungsdatum: 22.09.2004 Beiträge: 1
|
Verfasst am: 24.09.2004, 18:49 Titel: |
|
|
Ahhh, nein geht ned. Habe es jetzt geändert auf Copy. Auf meinem LW F: habe ich einen Ordner namens "backup" erstellt. In diesem Verzeichnis legt er auch einen Ordner mit dem aktuellen Datum an - jedoch leer. Dafür schreibt er jetzt keinen weiteren Ordner namens "verzeichnis$" - aber anscheinend nur weil ich das Programm im selben Ordner starte.
Bin ich denn zu blöde?
mit suizidalen Gedanken
Jürgen |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 24.09.2004, 20:25 Titel: |
|
|
suizidal? Da ist Hilfe gefragt!
Also:
1.) Zieh dir einen QBasic-Compiler von www.qbasic.de/downloads
2.) Schreibe dein Programm da rein!
3.) Führs einfach mal aus und schau obs geht. Nach Testlauf immer wieder den Verzeichnisordner löschen!
4.) wenns geht geh auf "Ausführen"->"Exe erstellen". unbedingt "Selbstständige Exe-datei" anhaken!
5.) Jetzt kannst hast du eine Anwendung, die dir deine Daten backupt.
Solltest du es nicht hinbekommen Quatsch mich mal irgendwie im ICQ an oder so oder komm Donnerstags in den QBasic-Chat http://antonischat.mainchat.de _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 24.09.2004, 21:54 Titel: |
|
|
Zitat: | SHELL "XCopy f:\Bilder\Palm1.jpg + verzeichnis$"
SHELL "XCopy f:\Bilder\Palm2.jpg + verzeichnis$" |
Muss ' + verzeichnis$' nicht außerhalb der Anführungszeichen? |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 24.09.2004, 22:43 Titel: |
|
|
Da vermutlich das Ganze sowieso in einer modernen 32-Bit-Windows-Umgebung zum Einsatz kommt, wäre an und für sich VBScript mit Windows Script Host (WSH) die geeignetere Variante, das Ganze mit dem at-Kommando unter NT 4.0/W2K/XP Prof. geschedult.
Aber selbstverständlich kann man es auch mit dem guten alten QBasic lösen. Die Interpreter-Version von MS-DOS 6.22 würde auch schon reichen; einfach per AT-Kommando ein
Code: | qbasic /run datsich |
schedulen. Umgekehrt muss DATSICH.BAS mit einem
beendet werden. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
jupi
Anmeldungsdatum: 10.09.2004 Beiträge: 35
|
Verfasst am: 26.09.2004, 14:28 Titel: |
|
|
Anonymous hat Folgendes geschrieben: | :
[...]
Code: |
rootdir$ = "f:\backup"
datedir$ = "\" + MID$(DATE$, 4, 2) + "-" + LEFT$(DATE$, 2) + "-" + RIGHT$(DATE$, 2)
verzeichnis$ = rootdir$ + datedir$
MKDIR verzeichnis$
SHELL "XCopy f:\Bilder\Palm1.jpg + verzeichnis$"
SHELL "XCopy f:\Bilder\Palm2.jpg + verzeichnis$"
|
Jetzt bin ich auch halbwegs glücklich. Bis auf die Tatsache, dass er zwar einen Ordner mit dem richtigen Datum erstellt aber leider sind die Bilder ned drinnen und dann macht er auch zusätzlich einen ebenfalls leeren Ordner namens "verzeichnis$" im dem Verzeichnis, wo ich die test.exe Datei ausführe.
Das ist irgendwie unbefriedigend.
Ach ja, wenn die Datei im Compiler ausführe dann erhalte ich eine Fehlermeldung "Pfad/Datei-Zugriffsfehler" - woran liegt das denn nun? Ich habe das Betriebssystem WinXP.
|
Mach statt
Code: |
SHELL "XCopy f:\Bilder\Palm1.jpg + verzeichnis$"
SHELL "XCopy f:\Bilder\Palm2.jpg + verzeichnis$"
|
besser Folgendes:
Code: |
SHELL "XCopy f:\Bilder\Palm1.jpg" + verzeichnis$
SHELL "XCopy f:\Bilder\Palm2.jpg" + verzeichnis$
|
Begründung: Variable darf nicht in Anführungszeichen stehen, sonst wird sie nicht als Variable interpretiert sondern für normalen Text gehalten.
Grüße,
jupi
EDIT: Hab gerade gesehen, dass CWF das schon gepostet hat. Dann hab ich jetzt halt das Codebeispiel dazu geliefert |
|
Nach oben |
|
|
Gast
|
Verfasst am: 26.09.2004, 14:51 Titel: |
|
|
Das habe ich auch gerade ausprobiert. Leider funzt auch das ned. Also, die Datei namens jammertal.exe wird ausgeführt im Explorer unter WinXP. Der Inhalt ist genauso, wie beschrieben. Die Datei erstellt einen Ordner mit dem aktuellem Datum - jedoch ohne die beiden Bilder. Ich habe voher einen Ordner namens 2backup" erstellt, denn sonst gibt es ja eine Fehlermeldung. Die Bild Dateien befinden sich im Verzeichnis Bilder, wie im Code angegeben.
Warum kopiert das Miststück die blöden Bilder ned? Ich verlange doch nicht viel im Leben und habe nie meine Mutter geschlagen.
Hat denn keiner sonst noch ein Vorschlag?
traurig
Jürgen |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 26.09.2004, 15:15 Titel: |
|
|
Eine einfache Erklärung: QBasic kann als uralte, für MS-DOS 6.22 und älter entwickelte Anwendung nur mit den damals üblichen 8+3-Zeichen-Dateinamen umgehen. Mach Dich also auf JAMMER~1.JPG und solche Dinge gefasst! Vor allem rootdir$ mit langen Namen wird QBasic beim MKDIR nicht mögen...
Daher mein gut gemeinter Tipp: Ich würde evtl. alles mit VBScript mit dem WSH lösen, dort funktionieren lange Dateinamen ohne Wenn und Aber. :-) _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
|