Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

GELÖST

Parameter -Y in Robocopy

Mitglied: Machete

Machete (Level 1) - Jetzt verbinden

04.01.2011, aktualisiert 12:36 Uhr, 7892 Aufrufe, 26 Kommentare

Habe mir im Netz schon die Augen wund gesucht.

Hallo ihr Lieben,

Momentan arbeite ich an einer Batch um unterschiedliche Daten von A nach B zu kopieren.
Hierbei ist es wichtig dass nicht alle Daten kopiert bzw. einfach überschrieben werden.
In Robocopy Ausnahmen zu definieren ist kein Thema, allerdings hätte ich ganz gerne eine Abfrage aller /-Y wie bei xCopy bevor die Datei überschrieben wird.

Oder anders herum bei xCopy die Möglichkeit zu sagen dass nur ein bestimmter Dateityp übertragen wird.
Bei xCopy gibt es ja nur die Möglichkeit zu sagen Datei Typ .XY nicht. Wenn allerdings ein neuer Datei Typ dazu kommen würde, wäre dieser unberücksichtigt.

Irgendwie ist je nach Anwendung nur eines von beidem möglich.

Bitte sagt mir dass ich mich irre.


Vielen Dank und Gruß
Machete
Mitglied: bastla
04.01.2011 um 12:30 Uhr
Hallo Machete!

So richtig klar ist mir nicht, was Du genau erreichen willst - sollte es allerdings darum gehen, nur in B noch nicht vorhandene Dateien zu kopieren, könntest Du die Robocopy-Optionen "/XO" [Edit] und "/XN" zusammen [/Edit] versuchen ...

Grüße
bastla
Bitte warten ..
Mitglied: Machete
04.01.2011 um 13:03 Uhr
Hallo Bastla,

nee trifft es nicht so ganz.

In der Quelle gibt es unterschiedliche Dateien z.B. .doc und .docx. (und noch viele andere)

In das Zielverzeichnis sollen nur die .docx dateien kopiert werden was ja mit Robocopy kein Problem ist.

Bsp.: Robocopy "C:\Quelle" "C:\Ziel" /*.docx /E /eta /r:5 >C:\Abgleich.log

Nun möchte ich gerne dass wenn eine Datei schon vorhanden sein sollte, erst gefragt wird ob diese überschrieben werden soll.

Das geht halt bei xCopy mit dem Parameter /-Y. Diesen gibt es bei Robocopy ja leider nicht.

Im gegenzug gibt es bei xCopdy nicht die Möglichkeit zu sagen dass nur .docx Dateien übertragen werden sollen.

Gruß
Bitte warten ..
Mitglied: bastla
04.01.2011 um 13:06 Uhr
Hallo Machete!
Im gegenzug gibt es bei xCopdy nicht die Möglichkeit zu sagen dass nur .docx Dateien übertragen werden sollen.
Wieso denn nicht? Schon mal etwas in der Art
xcopy /-y D:\Quelle\*.docx D:\Ziel\
versucht?

Grüße
bastla
Bitte warten ..
Mitglied: Machete
04.01.2011 um 13:19 Uhr
Im CMD ausgeführt klappt das prima.

In einer .bat leider nicht. Da hängt er in einer Endlosschleife...

Muss mal eben schauen woran das liegt...
Bitte warten ..
Mitglied: Nagus
04.01.2011 um 13:25 Uhr
Hi,
robocopy überschreibt doch eh nur wenn es eine neuere Datei ist.

Unter welchen Bedingungen möchtest du denn das eine Datei überschrieben wird?

Gruß
Nagus
Bitte warten ..
Mitglied: Machete
04.01.2011 um 13:29 Uhr
Bedingung ist hier recht schwer zu sagen.

Ich möchte das der User bestätigt das die Datei überschrieben wird damit er nachher nicht sagen kann die Datei ist weg.
Es geht auch nur um Dateien welche geändert wurden.

Die Bestätigung ja/Nein/Alle muss also rein.
Bitte warten ..
Mitglied: Nagus
04.01.2011 um 13:50 Uhr
Ist doch simpel:

die Abfrage am Anfang mit überschreiben oder nicht mit so was:

/Edit
01.
set /p abfrage=Blablabla Y / N /A 
02.
goto "%abfrage%"
/Edit


per goto zur Sprungmarke und ausführen:

Geänderte ersetzen:
robocopy /s x:\pfad y:\pfad /XO

Geänderte nicht ersetzten:
robocopy /s x:\pfad y:\pfad /XC /XN

Einzelabfrage:
mit einer For Schleife und dem copy Befehl jede einzeln prüfen und dann den User fragen

Gruß
Nagus

PS: Alle Parameter von = robocopy /???
Bitte warten ..
Mitglied: bastla
04.01.2011 um 13:58 Uhr
Hallo Machete!
In einer .bat leider nicht. Da hängt er in einer Endlosschleife...
Eine Erklärung dafür wäre ein ">nul" am Ende der "xcopy"-Zeile ...

Grüße
bastla
Bitte warten ..
Mitglied: Machete
04.01.2011 um 14:59 Uhr
@bastla:

Hi,
habe kein >NUL in der Zeile stehen.
Allerdings funktioniert es jetzt. Ich habe das "x" bei xCopy weg gelassen und schon ging es.

@Nagus:

Hallo,
da ich in Sachen Batch noch recht am Anfang stehe ist das noch etwas zu hoch für mich.
Klingt aber gut.


Vielen Dank und Gruß
Machete
Bitte warten ..
Mitglied: Nagus
04.01.2011 um 17:37 Uhr
hier ein ungetestetes Beispiel (dass man bestimmt noch hübscher machen kann
01.
@echo off 
02.
:start 
03.
cls 
04.
echo Menü 
05.
echo Sollen Dateien überschrieben werden? 
06.
echo (1) Ja, wenn neuer 
07.
echo (2) Nein, niemals 
08.
echo (3) immer fragen 
09.
set/p abfrage= Bitte geben Sie die entsprechende Nummer ein 
10.
goto %abfrage% 
11.
echo. 
12.
echo Ungültige Eingabe! Bitte wiederholen ... 
13.
ping -n 10 localhost>nul 
14.
goto start 
15.
 
16.
:1 
17.
Rem ------- Ja wenn neuer --------- 
18.
echo Neuere Dateien werden ersetzt 
19.
robocopy /s x:\pfad y:\pfad /XO 
20.
goto ende 
21.
 
22.
:2 
23.
Rem ------- Nein niemlas --------- 
24.
echo es werden keine Dateien ersetzt 
25.
robocopy /s x:\pfad y:\pfad /XC /XN 
26.
goto ende 
27.
 
28.
:3 
29.
echo Es wird bei jeder Datei nachgefragt 
30.
xcopy x:\pfad y:\pfad /s /-y 
31.
goto ende 
32.
 
33.
:ende 
34.
echo fertisch 
35.
ping -n 10 localhost>nul
Gruß
Nagus
Bitte warten ..
Mitglied: Machete
05.01.2011 um 12:30 Uhr
@Nargus:

das ist natürlich erste Sahne.
Da wäre ich ja nie drauf gekommen.

Werde zwar hier und da noch einige änderungen vornehmen, ist aber echt Top.

Vielen Dank und Gruß
Machete
Bitte warten ..
Mitglied: Nagus
05.01.2011 um 14:54 Uhr
Kein Problem!

Aber bitte nur Nagus

Viel Spaß

Nagus
Bitte warten ..
Mitglied: Machete
07.01.2011 um 14:50 Uhr
Hi Nagus,

hat soweit alles super funktioniert.
Eine Kleinigkeit habe ich aber noch.

(Die komplette Batch abzubilden wäre glaube ich zu viel deshalb nur die betroffene Zeile)

C:\xcopy.exe "C:\Users\mag\Desktop\Offline fertig\Quelle\*.fcp" "C:\Users\mag\Desktop\Offline fertig\Ziel" /-Y /E /D >"C:\Users\mag\Desktop\Offline fertig\Quelle\Log\LogFile_Server.log"

Nun zu meinem Problem:
Wenn ich eine Log-Datei schreiben lasse, wird der Text ob die vorhandene Datei überschrieben werden soll nicht mehr angezeigt.
Man muss quasi blind j, n oder a eintippen.

Wenn ich den Befehl zum schreiben der Log rauslasse ist der Text wieder sichtbar.

Bin in der Suchfunktion zwar auf das gleiche Problem gestoßen welches aber komplett an dem was ich vor mir habe vorbei geht.

Hast du eine Idee

Gruß
Bitte warten ..
Mitglied: Nagus
08.01.2011 um 10:22 Uhr
Hm ...
das ist mit xcopy nicht lösbar!

da müsstest du copy in einer For Schleife nehmen, die jede Datei einzeln anpackt und zwei Ausgaben erzeugt.

Warum willst Du das loggen? In dem Fall schreibst Du einfach eine Warnung in das Log und der User ist selbst verantwortlich ....

Außerdem werden die irgendwann anfangen die Option mit dem neueren Dateien nutzen. Du könntest das aber auch noch anders angehen, und zunächst Datei listen generieren, diese auf gleiche Dateien prüfen und wenn es gleiche gibt diese ausspucken. Und dann gibst du die Option raus, überschreiben oder abbrechen ..... Alternativ automatisch einen neuen Namen erzeugen....

Gruß
Nagus
Bitte warten ..
Mitglied: Machete
08.01.2011 um 18:19 Uhr
Hallo Nagus,

das mit dem umbenennen der Dateien habe ich auch schon ausprobiert.

- Temp Ordner erstellen
- geänderte Daten rein Kopieren
- umbenennen lassen
- wieder in das urspüngliche Verzeichnis kopieren
- Temp ordner wieder löschen
- letztendlich der Abgleich

funktioniert soweit ganz gut, allerdings häufen sich dann die Dateien mit gleicher Bezeichnung.
Bei mir ist es so das immer ein _1 mit dazu geschrieben wird. Datum wäre natürlich auch möglich.
Das Problem wie gesagt ist das es zu viel wird.

Die Log ist einfach nur zur Sicherheit um im Zweifelsfall zu sehen ob der User ja/nein oder alle gesagt hat...

Die Abfrage ja/nein/alle ansich findet ja auch statt, nur sie ist unsichtbar.
Die Batch wartet auf die Eingabe ohne anzuzeigen um welche Datei es geht...

Wenn Du magst kann ich auch mal die komplette Batch posten...


Gruß Luca
Bitte warten ..
Mitglied: Nagus
09.01.2011 um 11:05 Uhr
Moin Machete,

Wenn Du wissen willst ob der User ja nein gedrückt hat ist es doch easy: Du Fragst nur den Zustand am Anfang ab! Hat der User einzel abfrage gedrückt, dann hat er die Verantwortung! Das ist immer so ...

Deswegen würde ich die ERSTE Antwort in ein Log schreiben und es dabei bewenden lassen. Du kannst dann klar dokumentieren, das er "Einzelbestätigung" aufgerufen hat.

01.
... 
02.
set/p abfrage= Bitte geben Sie die entsprechende Nummer ein 
03.
 
04.
echo %date% %time:~0,8% %username% %Antwort% >> copy.log 
05.
 
06.
goto %abfrage% 
07.
echo. 
08.
echo Ungültige Eingabe! Bitte wiederholen ... 
09.
ping -n 10 localhost>nul
so in der Art. Was er pro Datei macht - seine Entscheidung! Immerhin reden wir doch von erwachsenen Menschen!
Außerdem: hast du kein Backup auf das Laufwerk? Damit könntest Du doch bei einem Fehler wiederherstellen ...
Mach es so elegant wie möglich, aber auch nicht zu kompliziert!
Gruß
Nagus
Bitte warten ..
Mitglied: Machete
09.01.2011 um 11:40 Uhr
Vielen Dank,

werde dies so schnell wie möglich ausprobieren und gebe dann noch mal Rückinfo.

PS: Das mit den erwachsenen Menschen ist so ne Sache

Gruß Machete
Bitte warten ..
Mitglied: Machete
10.01.2011 um 19:12 Uhr
Hallo Nagus,

habe den Befehl %Abfrage% auch noch mit rein gepackt.

Die Antwort schreibt er allerdings nicht mit in die log.

Gruß Machete
Bitte warten ..
Mitglied: bastla
10.01.2011 um 19:18 Uhr
Hallo Machete!

Falls Du damit meinst, dass Du die Zeile 4 von
echo %date% %time:~0,8% %username% %Antwort% >> copy.log
auf
echo %date% %time:~0,8% %username% %abfrage% >> copy.log
korrigiert hast, sollte das aber klappen ...

Grüße
bastla
Bitte warten ..
Mitglied: Machete
10.01.2011 um 20:54 Uhr
Hallo Bastla,

ja, das habe ich gemacht.
Allerdings habe ich %Antwort% auch in der Zeile belassen.
Die Antwort: ja/nein/alle wird aber nicht in den log geschrieben.

Was er konkret rein schreibt ist Datum, Uhrzeit, User und welchen Parameter er gewählt hat.
Der Eintrag der Abfrage ob und wie Überschrieben wird fehlt leider.

Da bei einem "normalen" log leider die Zeile "Soll datei xy überschrieben werden unsichtbar ist wäre zumindest diese Möglichkeit schön.

Gruß Machete
Bitte warten ..
Mitglied: bastla
10.01.2011 um 21:06 Uhr
Hallo Machete!

Dann verwende eben folgende Zeile:
for /f "tokens=2* delims=) " %%i in ('findstr "(%abfrage%)" "%~0"') do >>copy.log echo %date% %time:~0,8% %username% %%j
Vorausgesetzt habe ich, dass die Menüzeilen wie oben beschrieben
01.
echo (1) Ja, wenn neuer 
02.
echo (2) Nein, niemals 
03.
echo (3) immer fragen
lauten und es keine weiteren Zeilen, die eine Zeichenfolge der Art "(Zahl)" enthalten, in der Batchdatei gibt, da nach dieser Kombination gesucht und anhand der Trennzeichen ")" und Leerzeichen zerlegt wird.

Grüße
bastla
Bitte warten ..
Mitglied: Nagus
10.01.2011 um 21:57 Uhr
Ah - bastla

Das muss ich mir auch mal merken ... die for schleifen sind immer genial - ich tu mich nur immer ein bisserl schwer damit!

Gruß
Nagus
Bitte warten ..
Mitglied: Machete
10.01.2011 um 22:58 Uhr
Hallo Bastla,

im ganzen sind es 5 Zahlen in der Auswahl.

Wenn du magst kann ich die auch posten...

Gruß Machete
Bitte warten ..
Mitglied: bastla
10.01.2011 um 23:02 Uhr
Hallo Machete!

Wenn es 5 verschiedene Zahlen (in der gesamten Batchdatei) sind, sollte das funktionieren - es wird ja nach der gewählten Zahl gesucht ...

Grüße
bastla
Bitte warten ..
Mitglied: Machete
11.01.2011 um 10:05 Uhr
Klappt super,

Vielen Dank an Alle (auch für die Geduld)

Gruß Machete
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell: Aufruf robocopy mit Parameter
Frage von bensonhedgesBatch & Shell1 Kommentar

Hallo, ich bin Powershell-Neuling und habe ein Problem mit der Übergabe von robocopy-Optionen in einer Variable: $Options = "/COPYALL ...

PHP
PHP Adresse mit eigenen GET Parametern als GET Parameter
gelöst Frage von justanumber44PHP3 Kommentare

Hallo :D Wenn ich eine Adresse wie habe, wie schaffe ich es am besten die Adresse als Parameter zu ...

Batch & Shell
Move mit Robocopy
gelöst Frage von 0xC0FFEBatch & Shell2 Kommentare

Hallo zusammen, ich würde gerne Bilder von einem Verzeichnis in ein anderes Verschieben mit Folgenden Ausschlusskriterien: Dateiendung : .jpg ...

Batch & Shell
Robocopy Logfile
gelöst Frage von michi-ffmBatch & Shell7 Kommentare

Hallo zusammen, evtl kann jemand helfen ^^ Habe hier ein Teile aus dem Code: Das skript synchronisiert 2 Ordner ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 18 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...