Parameter -Y in Robocopy
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 157974
Url: https://administrator.de/contentid/157974
Ausgedruckt am: 15.11.2024 um 11:11 Uhr
26 Kommentare
Neuester Kommentar
Ist doch simpel:
die Abfrage am Anfang mit überschreiben oder nicht mit so was:
/Edit
/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 /???
die Abfrage am Anfang mit überschreiben oder nicht mit so was:
/Edit
set /p abfrage=Blablabla Y / N /A
goto "%abfrage%"
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 /???
hier ein ungetestetes Beispiel (dass man bestimmt noch hübscher machen kann
Gruß
Nagus
@echo off
:start
cls
echo Menü
echo Sollen Dateien überschrieben werden?
echo (1) Ja, wenn neuer
echo (2) Nein, niemals
echo (3) immer fragen
set/p abfrage= Bitte geben Sie die entsprechende Nummer ein
goto %abfrage%
echo.
echo Ungültige Eingabe! Bitte wiederholen ...
ping -n 10 localhost>nul
goto start
:1
Rem ------- Ja wenn neuer ---------
echo Neuere Dateien werden ersetzt
robocopy /s x:\pfad y:\pfad /XO
goto ende
:2
Rem ------- Nein niemlas ---------
echo es werden keine Dateien ersetzt
robocopy /s x:\pfad y:\pfad /XC /XN
goto ende
:3
echo Es wird bei jeder Datei nachgefragt
xcopy x:\pfad y:\pfad /s /-y
goto ende
:ende
echo fertisch
ping -n 10 localhost>nul
Gruß
Nagus
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
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
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.
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
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.
...
set/p abfrage= Bitte geben Sie die entsprechende Nummer ein
echo %date% %time:~0,8% %username% %Antwort% >> copy.log
goto %abfrage%
echo.
echo Ungültige Eingabe! Bitte wiederholen ...
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
Hallo Machete!
Dann verwende eben folgende Zeile:
Vorausgesetzt habe ich, dass die Menüzeilen wie oben beschrieben
lauten und es keine weiteren Zeilen, die eine Zeichenfolge der Art "
Grüße
bastla
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
echo (1) Ja, wenn neuer
echo (2) Nein, niemals
echo (3) immer fragen
(Zahl)
" enthalten, in der Batchdatei gibt, da nach dieser Kombination gesucht und anhand der Trennzeichen ")" und Leerzeichen zerlegt wird.Grüße
bastla