Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

xcopy Problem
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jürgen
Gast





BeitragVerfasst am: 21.09.2004, 18:34    Titel: xcopy Problem Antworten mit Zitat

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

BeitragVerfasst am: 21.09.2004, 21:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: 21.09.2004, 22:20    Titel: Antworten mit Zitat

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






BeitragVerfasst am: 21.09.2004, 22:24    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 22.09.2004, 13:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: 22.09.2004, 17:55    Titel: Antworten mit Zitat

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 traurig

vielen Dank noch einmal
Thorgal
Nach oben
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 22.09.2004, 19:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: 22.09.2004, 19:54    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 22.09.2004, 19:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 22.09.2004, 20:03    Titel: Ähm? Antworten mit Zitat

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
Code:
mkdir verzeichnis$

dass ein Verzeichnis mit dem Namen verzeichnis$ erstellt wird... mit den Augen rollen

Ist das denn noch keinem aufgefallen?!

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!


Zuletzt bearbeitet von Sebastian am 22.09.2004, 20:14, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 22.09.2004, 20:07    Titel: Antworten mit Zitat

Wenn ich ehrlich bin, habe ich das übersehen... verlegen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Gast






BeitragVerfasst am: 24.09.2004, 16:05    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 24.09.2004, 16:14    Titel: So Antworten mit Zitat

Hallo.

1. Im Compiler ausführen...
Im Compiler kannst du keine Programme ausführen. zwinkern Der Compiler (BC.EXE) macht aus BAS-Dateien OBJ-Dateien. Die Programme führst du in der IDE bzw. dem Interpreter aus. zwinkern

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. zwinkern

2. Benutz anstelle von XCOPY einfach COPY.

Ich drück dir die Daumen, dass es dann geht. lächeln

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jürgen



Anmeldungsdatum: 22.09.2004
Beiträge: 1

BeitragVerfasst am: 24.09.2004, 17:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 24.09.2004, 19:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 24.09.2004, 20:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 24.09.2004, 21:43    Titel: Antworten mit Zitat

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
Code:
system

beendet werden.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jupi



Anmeldungsdatum: 10.09.2004
Beiträge: 35

BeitragVerfasst am: 26.09.2004, 13:28    Titel: Antworten mit Zitat

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 grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gast






BeitragVerfasst am: 26.09.2004, 13:51    Titel: Antworten mit Zitat

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)

BeitragVerfasst am: 26.09.2004, 14:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz