Hi,
ich habe da in einem Forum geblättert und gesehen das Ihr Euch mit DOS sehr gut auskennst. Ich bin darin ein blutiger Anfänger und doch habe ich eine DOS-Frage.
Es geht um den Befehl X-Copie. Ich will Daten von PC1 zu PC2 im Netzwerk schaufeln lassen. Am besten wäre es wenn das nach dem hochfahren automatisch passiert. Ich weiss nicht ob das überhaut geht aber ich habe zufällig Eure Unterhaltung im Forum mitgelesen, da ging es auch um x-copie. Dies habe ich aus einer Unterhaltung:
SHELL "XCOPY c:\\Datei.neu c:\\Datei.alt /d:" + Date$
SYSTEM
So wie ich das verstanden habe sollte man diesen Befehl in die Autoexec.bat eintragen. Ich habe die Datei Autoexec.bat mal aufgerufen aber ich weiss nicht wie ich dort etwas eintragen kann.
ich danke für deine Hilfe
Michel
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
was du willst ist in wirklichkeit:
xcopy quelle ziel parameter
(also kein 'shell', 'system' etc.)
bearbeiten kannst du die autoexec.bat mit jedem editor, zum beispiel dem zu dos gehoerenden programm edit. die datei ist einfach eine textdatei und darum kannst du sie auch einfach mit einem texteditor bearbeiten.
WM_HOPETHISHELPS
hi,
die Frage ist erstmal ob das die richtige Autoexe.bat-Datei ist, die ich fand.
Ich klicke auf Arbeitsplatz und dann LAufwerk C: und da gibt es diese Datei. Wenn ich da drauf klicke geht aber ein DOS-Fenster auf. Eine Text-Datei ist das nicht.
danke
Michel
doch das ist die richtige Datei, sie liegt im root von C:, öffne sie mit bearbeiten und schon kommt der Editor..
MfG
Gurus
Hi Gurus,
wunderbar, ein wahnsinns Fortschitt für mich. Ich bin also im Moment im Editor. Vielleicht kannst du mir ja helfen indem du mir die Befehlszeile sagst. Die Ordnernamen kann ich ja immer noch in der Befehlszeile nachtragen.
Das Problem ist das die Daten nach dem Neustart auf einen anderen PC müssen und ich nicht weiss wie man eine Pfadangabe über Netzwerk macht.
danke dir
Michel
cu
> die Frage ist erstmal ob das die richtige Autoexe.bat-Datei ist ??
Hi Leute,
ich habe bei mir in der Autoexe.bat die Befehlszeile: xcopy c:\autoexec.bat x:\*.* eingefügt. In der Autoexe steht nun nach dem hochfahren des PC's das er 0 Dateien kopiert hat.
So, ich will aber das er aus Qrdner x zu Ordner y im Netzwerk nur die neuesten Dateien jeweils nach dem hochfahren kopiert. Mal gespannt wer mir hier von Euch sagen kann wie die Befehlszeile dann lauten müsste.
danke
Michel
SYSTEM
So stand das auf jeden Fall nicht in einer Batch Datei - stammt eindeutig aus einem Basic Programm, möglich das ich das sogar hier gepostet habe...
Zum einfachen Kopieren reicht
xcopy %file% %target%
für Backupzwecke eignet sich die Verwendung des Archiv-Attributes und das mitkopieren von Unterverzeichnissen. Die dafür notwendigen Kommandozeilenparemeter kannst Du der Ausgabe von
xcopy /?
entnehmen (einfach in der Eingabeaufforderung eingeben).
Die Autoexec.bat ist für ein Kopieren im Netzwerk auch einfach ungeignet da zu diesem Zeitpunkt weder eine Netzwerkverbindung hergestellt ist, noch die Netzlaufwerke gemappt sind. Hier bietet sich eher die Autostartgruppe oder das LogOn-Script an...
CU Borlander
Hi Borlander und die Anderen,
Problem beseitigt,
ich habe es geschafft. Nach 2 Stunden *schwitz* :-)
Musste mir erst einmal eine ".bat- Datei" im Autostart erstellen und dann
meine Netzwerkumgebung auf Netzlaufwerk verbinden des 2.PC's einstellen. Nun
legte er ein neues Laufwerk im Arbeitsplatz an. Ich hatte dann die
Pfadangabe F:\...Mit dem neuen Laufwerksbuchstaben F:\ konnte xcopie
natürlich mehr anfangen.
Die neue ".bat- Datei" war sehr wichtig da er erst nach dem Hochfahren mit
dem Laufwerk verbindet und danach dann kopiert. In der stinknormalen, in C:\
vorhandenen Autoexec.bat hätte das nicht über Netzwerk funktioniert.
Funktioniert super mit x-copie
dank Euch allen
Michel
So etwas löst man wirklich wesentlich eleganter mit einem VB-Script Diesen kann man dann noch mit dem Taskplaner zeitlich steuern, z.B. beim Starten des Rechners. Dort kannst Du ggf.auch Deine bat bzw. cmd Datei einlagern !!
Hi repi,
Was ist ein VB-Script und kann ich da einfach irgendwas hineinziehen, in den Taskplaner?
Ein VB Scribt ist ein Visual Basic Script und sollte bei W98SE schon standartmässig dabei sein !
Wenn es auf Deinem Rechner eine wscript.exe gibt (gewöhnlich im windows-Verzeichniss) dann sollte es funktionieren !
Anleitungen zu VB gibt es bei MS !
oder Du schaust hier
hth
repi
hi repi,
so wie ich das verstehe ist ein VB-Script in den Quelltexten von Websites zufinden. Ich wüsste aber nicht was das die Arbeit erleichtern sollte, denn dafür muss ich doch auch einen editor beschreiben und der Text sieht ein bissel aufwendiger aus. Naja, es kommt vielleicht darauf an was man machen will.
míchel
VB kann im Quelltext von Webseiten verwendet werden und wird dann wohl nur vom IE richtig interprtiert !
Also sollte man es lassen !
In erster Linie ist VBS bzw. VBA die Scriptsprache für Windows bzw. die Makrosprache in Officeanwendungen und wesentlich mächtiger als Batch !
VBS bzw.VBA ist in weiten Teilen kompatibel zur Visual Basic Entwicklungsumgebung !
Hier z.B ein Quelltext zum kopieren von bestimmten Verzeichnissen :
'***********************************************************************
'* D2Copy.vbs Visual Basic Script für Windows Hostscripting
'***********************************************************************
'* Kopiert diverse Unterverzeichnisse von tgt_dc1 auf tgt_dc2
'***********************************************************************
'* V 1.0 (RP) 22.10.1999 Ersterstellung
'* V 1.1 (RP) 03.11.1999 Einbau DeleteFolder,
'* wegen schreibgeschützten Dateien
'* V 1.2 (RP) 08.11.1999 Sendmail an operator_s umgeleitet
'* V 1.3 (JB) 08.02.2000 Programme auf c:\scripts umgestellt
'* V 1.4 (RP) 06.11.2001 kopieren von tgt_dc1\c\operator
'* rausgenommen
'***********************************************************************
'Dim der Variablen
dim Source,Target
dim MSGString,Text
dim ret
'Error-Routine einschalten
on error resume next
'Create des Objektes als FileSystemObject und ShellObject
SET fs = CreateObject("Scripting.FileSystemObject")
Set ws = WScript.CreateObject("WScript.Shell")
'Initialisieren der Variablen
Source = "\\tgt_dc1\d\dii"
Target = "\\tgt_dc2\d\dii"
' Kopierroutine für Subvol D:\DII
' *******************************
'Löschen der Dateien im Verzeichnis D:\dii auf tgt_dc2...
ret=fs.DeleteFolder (Target,true)
'Kopieren der Dateien im Verzeichnis D:\dii mit Überschreibung, wenn bereits da...
ret=fs.CopyFolder (Source,Target,true)
if CStr(Err.Number) = 0 then
'Info an Eventlog über erfolgreichen Abschluß
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s S -c 1000 " & Chr(34)
ret = ret & "Dispos II von tgt_dc1 auf tgt_dc2 erfolgreich kopiert"
ret = ws.run (ret,0)
Err.Clear
Text = "Dispos II Kopie auf tgt_dc2 war erfolgreich !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.O.K. -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
else
'Info an Eventlog über fehlerhaften Abschluß
MSGString = "WHS D2Copy.vbs mit Fehler # " &CStr(Err.Number) & " ," & Err.Description
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s E -c 1000 " & Chr(34)
ret = ret & MSGString
ret = ws.run (ret,0)
Err.Clear
Text = "Dispos II Kopie auf tgt_dc2 war nicht erfolgreich, bitte kontrollieren !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.Fehler -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
end if
' Kopierroutine für Subvol d:\stdsoft\easy6530.723
' ************************************************
Source = "\\tgt_dc1\d\stdsoft\easy6530.723"
Target = "\\tgt_dc2\d\stdsoft\easy6530.723"
ret=fs.CopyFolder (Source,Target,true)
if CStr(Err.Number) = 0 then
'Info an Eventlog über erfolgreichen Abschluß
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s S -c 1000 " & Chr(34)
ret = ret & "Verzeichniss easy6530.723 auf tgt_dc2 erfolgreich kopiert"
ret = ws.run (ret,0)
Err.Clear
Text = "Verzeichnis easy6530.723 auf tgt_dc2 war erfolgreich !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.O.K. -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
else
'Info an Eventlog über fehlerhaften Abschluß
MSGString = "WHS D2Copy.vbs mit Fehler # " &CStr(Err.Number) & " ," & Err.Description
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s E -c 1000 " & Chr(34)
ret = ret & MSGString
ret = ws.run (ret,0)
Err.Clear
Text = "Kopie Verzeichniss easy6530.723 auf tgt_dc2 war nicht erfolgreich, bitte kontrollieren !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.Fehler -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
end if
WScript.Quit()
'************************************* Ende der Routine ***************************************
repi
VB kann im Quelltext von Webseiten verwendet werden und wird dann wohl nur vom IE richtig interprtiert !
Also sollte man es lassen !
In erster Linie ist VBS bzw. VBA die Scriptsprache für Windows bzw. die Makrosprache in Officeanwendungen und wesentlich mächtiger als Batch !
VBS bzw.VBA ist in weiten Teilen kompatibel zur Visual Basic Entwicklungsumgebung !
Hier z.B ein Quelltext zum kopieren von bestimmten Verzeichnissen :
'***********************************************************************
'* D2Copy.vbs Visual Basic Script für Windows Hostscripting
'***********************************************************************
'* Kopiert diverse Unterverzeichnisse von tgt_dc1 auf tgt_dc2
'***********************************************************************
'* V 1.0 (RP) 22.10.1999 Ersterstellung
'* V 1.1 (RP) 03.11.1999 Einbau DeleteFolder,
'* wegen schreibgeschützten Dateien
'* V 1.2 (RP) 08.11.1999 Sendmail an operator_s umgeleitet
'* V 1.3 (JB) 08.02.2000 Programme auf c:\scripts umgestellt
'* V 1.4 (RP) 06.11.2001 kopieren von tgt_dc1\c\operator
'* rausgenommen
'***********************************************************************
'Dim der Variablen
dim Source,Target
dim MSGString,Text
dim ret
'Error-Routine einschalten
on error resume next
'Create des Objektes als FileSystemObject und ShellObject
SET fs = CreateObject("Scripting.FileSystemObject")
Set ws = WScript.CreateObject("WScript.Shell")
'Initialisieren der Variablen
Source = "\\tgt_dc1\d\dii"
Target = "\\tgt_dc2\d\dii"
' Kopierroutine für Subvol D:\DII
' *******************************
'Löschen der Dateien im Verzeichnis D:\dii auf tgt_dc2...
ret=fs.DeleteFolder (Target,true)
'Kopieren der Dateien im Verzeichnis D:\dii mit Überschreibung, wenn bereits da...
ret=fs.CopyFolder (Source,Target,true)
if CStr(Err.Number) = 0 then
'Info an Eventlog über erfolgreichen Abschluß
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s S -c 1000 " & Chr(34)
ret = ret & "Dispos II von tgt_dc1 auf tgt_dc2 erfolgreich kopiert"
ret = ws.run (ret,0)
Err.Clear
Text = "Dispos II Kopie auf tgt_dc2 war erfolgreich !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.O.K. -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
else
'Info an Eventlog über fehlerhaften Abschluß
MSGString = "WHS D2Copy.vbs mit Fehler # " &CStr(Err.Number) & " ," & Err.Description
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s E -c 1000 " & Chr(34)
ret = ret & MSGString
ret = ws.run (ret,0)
Err.Clear
Text = "Dispos II Kopie auf tgt_dc2 war nicht erfolgreich, bitte kontrollieren !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.Fehler -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
end if
' Kopierroutine für Subvol d:\stdsoft\easy6530.723
' ************************************************
Source = "\\tgt_dc1\d\stdsoft\easy6530.723"
Target = "\\tgt_dc2\d\stdsoft\easy6530.723"
ret=fs.CopyFolder (Source,Target,true)
if CStr(Err.Number) = 0 then
'Info an Eventlog über erfolgreichen Abschluß
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s S -c 1000 " & Chr(34)
ret = ret & "Verzeichniss easy6530.723 auf tgt_dc2 erfolgreich kopiert"
ret = ws.run (ret,0)
Err.Clear
Text = "Verzeichnis easy6530.723 auf tgt_dc2 war erfolgreich !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.O.K. -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
else
'Info an Eventlog über fehlerhaften Abschluß
MSGString = "WHS D2Copy.vbs mit Fehler # " &CStr(Err.Number) & " ," & Err.Description
ret = "\\tgt_dc1\c\scripts\logevent.exe -m \\tgt_dc1 -s E -c 1000 " & Chr(34)
ret = ret & MSGString
ret = ws.run (ret,0)
Err.Clear
Text = "Kopie Verzeichniss easy6530.723 auf tgt_dc2 war nicht erfolgreich, bitte kontrollieren !!"
MSGString = "\\tgt_dc1\c\scripts\sendmail.exe -u %COMPUTERNAME% -p " & Chr(34) & Chr(34) & " -s D2Copy.vbs.Fehler -r operator_s -m " & Chr(34)
MSGString = MSGString & Text & Chr(34)
ret = ws.run (MSGString,0)
end if
WScript.Quit()
'************************************* Ende der Routine ***************************************
repi
hi repi,
ganz ehrlich. Ich bin Musiker und dafür muss man ja Programmierer sein um so eine Sprache zu erlernen. Vielleicht in meinem nächsten Leben. Es sei denn es gibt vielleicht ein Programm das einem das erlernen solch einer komplexen Sprache Schritt für Schritt vereinfacht?
Michel
Hallo Michel!
Kommt daruf an, ws Du machen möchtest und was für ein Lerntyp Du bist. Es gibt eine ganze Reihe von Lehrbüchern oder -programmen für alle möglichen Programmiersprachen ("Jetzt lerne ich C", "Rechnerbooten leicht gemacht" usw.).
Ferner gibt es auch graphisch basierende Programmierumgebungen, bei denen man (wie ein Kind mit Bauklötzen) bestimmte Programmodule miteinander zu einem nach den Vorstellungen ablaufenden Anwendung kombiniert/vernetzt/verbindet.Nach meinen Erfahrungen sind die nicht ganz so flexibel, wie "klassiche" Sparchen, doch kommt man schnell zu gewissen Ergebnissen. So etwas dürfte der "kommandozeilenlos" aufgewachsen "Mausschubsergeneration unter WINDOWS" vielleicht etwas mehr entgegenkommen.
Und dann gibt es noch immer wieder mal Programmierkurse an einer VHS. Vorteil wäre hierbei: Persönlicher Kontakt mit dem Referenten bzw. ein kleines Forum für Probs.
Also, dann mal zu. Wir warten auf Software aus Deiner Schmiede!!!
Hi Pumbo,
da die Programmiersprachen und was man sonst alles so mit dem PC anstellen kann für mich sehr komplex wirken, wären graphisch basierende Programmierumgebungen schon supi aber da ist eben das Problem das meistens das nicht dabei ist was man sucht, wie du schon sagtest.
Jetzt habe ich mich entschlossen erstmal mit dem weiterzumachen wo ich gerade auf Gold gestossen bin, denn es ist für mich schon eine bahnbrechende Entdeckung, wenn ich dem PC sagen kann was er nach dem Neustart wo hineinkopieren soll.
Somit gibt es aber auch schon die ersten Probleme was die Baumstrukturen betrifft:
ich wollte diesen Befehl in die .bat-Datei eintragen aber nach dem hochfahren bringt er dann die Fehlermeldung: UNGÜLTIGE ANZAHL VON PARAMETERN:
xcopy C:\Programme\Guitar Pro 4\new tabs\*.* C:\Eigene Dateien\Daten\Musik\new tabs\*.*
Ich meine, das ist doch keine komplizierte Struktur, das müsste er doch hinbekommen aber trotzdem schreibt er bei solch langen Strukturen diese Fehlermeldung. Kann ich denn die Baumstrukturen mit den Unterverzeichnissen nicht unendlich lang machen?
Das wäre ja dann blöd
Ich möchte mich im Bereich DOS vielleicht doch schon ein bissel besser auskennen.
gruss
Michel
ich bin mir nicht sicher ob das mit den LEERZEICHEN in den Verzeichnissen so funktioniert..
MfG
Gurus
UNGÜLTIGE ANZAHL VON PARAMETERN:
vermute auch mal dass das an dem Leerzeichen liegt zwischen (Eigene_Dateien)
statt "Eigene Dateien" mal "Eigene~1" eingeben
mfg
Gitte
ja des liegt an den leerzeichen =)
die shell sieht standardmaessig alles was mit leerzeichen abgetrennt ist als parameter/option an (ausnahme: er ist in anfuehrungszeichen eingeschlossen).
also wird C:\Programme\Guitar Pro 4\new tabs\*.* , das ja nur EIN parameter sein soll zu VIER parametern
das problem lässt sich lösen, indem du entweder die pfadangaben in anfuehrungszeichen setzt (weiss nicht ob win9x das unterstuetzt) oder die 8-bit-schreibweise der verzeichnisse verwendest. die erfährst du mit dir /x
Hallo Leute,
ja da hattet Ihr recht. Ich habe mal eine Datei in dem letzten Ordner erstellt und er hat sie erfolgreich mit diesem Pfad kopiert.
xcopy C:\Progra~1\Guitar~2\newtab~1\*.* C:\Eigene~1\Daten\Musik\newtab~1\*.*
Jetzt ist es aber so. Ich möchte nicht nur eine spezielle Datei kopieren lassen sondern den kompletten letzten Ordnerinhalt und ich dachte er macht das automatisch.
Habt Ihr den Befehl parat umd den kompletten Ordnerinhalt zu kopieren?
danke
Michel
Hallo!
Mit *.* sollte das doch gehen.
Andereseits: Schaue mal nach sog. Qualifiern. Z.B. mit /S kannst Du alles, was unterhalb eines angegeb. Pfades liegt (also auch komplette Unterverzeichnissse) bei versch. Dos-Befehlen erfassen.
Wenn Du jetzt Dich zum Quellcodekloppen berufen fühlst, so wäre für Dich u.U. auch die Beschäftigung mit Macroprogrammierung (EXCEL oder WORD aber auch StarOffice) interessant. Da wird mit VB-Script (VB=VisualBasic) gearbeitet. Man kann damit schon eine Menge machen und alles ist schon "an Bord". Du kannst dadurch ein wenig Grundregeln im Umgang mit Programmiersparchen lernen, ohne was extra kaufen zu müssen. Schau mal im WEB danach, Bücher gibt es auch ganz gute.
Gruß
Pumbo
P.S.: Wenn Du Dich ein bischen mit Schnittstellen beschäftigst, dann kannst Du im Bereich MIDI einiges machen. Ich könnte mir bei Deinem Nick vortsellen, dass das durchaus von Interesse sein könnte.
Hi Pumbo,
mit /S hat es auch funktioniert. Den Rest(die anderen Befehle) suche ich mir dann in der Eingabeaufforderung unter dem Befehl Dir /?|more. Hab jetzt wirklich schon ein bissel was gelernt :-)
Mit Midi arbeite ich auch, weil ich ein sogenanntes Midi-Keyboard besitze aber was das jetzt mit den Dos-Befehlen um die .bat zu füttern zu tun hat, verstehe ich jetzt nicht?!?
Ab nächstes Jahr hole ich mir dann ein USB Keyb. das machte die Sache dann schon einfacher :-)
danke Euch
Michel