Batch Move/Rename forcieren?

nospherato

Admiral Pro
🎅Rätsel-Elite ’11
Registriert
Sep. 2007
Beiträge
7.565
Hallo zusammen,
ich habe momentan ein kleines Programmierproblem.
Ich habe ein Script, welches eine gewisse Anzahl an Verzeichnisversionen beibehält.
Das Ganze funktioniert ansich ja ganz gut.
Problem nur: Das Verzeichnis ist 2mal freigegeben. 1x als FTP und 1x als SMB.
Bevor das Script läuft, wird die FTP Freigabe kurzzeitig aufgehoben. Die SMB allerdings muss beibehalten werden.
Nun stört dies wohl die Batch.

Jetzt ist die Frage: Kann ich mit Windows Boardmitteln irgendwie ein rename, move oder ähnliches forcieren, sodass die Dateien+Verzeichnisse tatsächlich "gewaltsam" verschoben/umbenannt werden, egal ob nun von jemandem geöffnet oder nicht?

(Das Script soll so einfach wie möglich gehalten werden, deshalb Batch und kein VBS oder sonstiges. Momentan ist ein einfaches rename+robocopy im Einsatz)
 
Jetzt ist die Frage: Kann ich mit Windows Boardmitteln irgendwie ein rename, move oder ähnliches forcieren, sodass die Dateien+Verzeichnisse tatsächlich "gewaltsam" verschoben/umbenannt werden, egal ob nun von jemandem geöffnet oder nicht?

Nein oder es droht Datenverlust. Du kannst veranlassen das es sobald es wieder geschlossen ist verschoben/gelöscht wird. Die meisten solchen Programme machen das verschieben nach Neustart da sonst dauernd gepollt werden muss ob die Datei schon wieder frei ist.
 
Es gibt von unix portierte command line tools die so etwas können.
Hatte ich früher um in alten Windows Versionen Dateien zu löschen die Windows nicht freigeben wollte.
Praktisch unterm Hintern weggelöscht ^^

Hier könnten sie dabei sein:
http://sourceforge.net/projects/unxutils/files/unxutils/current/

irgendwo im unterordner sind lauter files wie mkdir.exe usw.
die kannst dann in deine batch eintragen
 
Zuletzt bearbeitet:
@Mumpitzelchen
Der evtl. Datenverlust wird in diesem Fall tatsächlich in Kauf genommen.
Wie meinst du mit dem Retry? Robocopy hat ja die Möglichkeit des Retry also /r und /w, diese gelten ja aber nur für den Copyteil. Und kopieren kann er locked dateien ja (grad getestet) aber löschen kann er diese nicht.
Sprich ich nutze z.B. robocopy /mir /b /r100 /w:300 c:\test\ c:\test2\ test.xlsx
so kopiert er die Datei zwar, aber die Quelldatei bleibt bestehen (habe die xlsx natürlich gerade geöffnet, damit diese "locked" ist).
Er versucht beim bereinigen der Quelldatei keinen retry...

@Rob83
Nett gemeint, allerdings kann ich hier nicht einfach "Thirdparty Tools" verwenden ;)
 
Die Möglichkeit ist mir bekannt, ich kann auch Robocopy mit VSS verbinden über tausend Umwege (kannst ja dann das Shadowvolume mappen usw.). Aber das Problem ist ja nicht das wegkopieren, sondern das die Quelldateien danach weg sein müssen. Und hier liegt ja der Hase begraben...
Kopieren klappt ja. Nur das Löschen nicht bzw. beim "verschieben" wird das Quellverzeichnis nicht bereinigt/entfernt.

Edit:
Was mir einfällt, was ebenfalls möglich wäre: So lange prüfen, bis alle Files unlocked sind und erst dann das Robocopy seinen Job machen lassen. Es gibt ja den "workaround" mit rename, aber das ist hier nicht praktikabel. Gibts dazu nicht eine check Abfragemöglichkeit?

Edit2:
Was mich übrigens wundert: robocopy hat ja die Möglichkeit wie gesagt einen retry zu machen bzw. standardmäßig 1mio. Aber warum kopiert er in meinem Fall (geöffnete xlsx Datei) die test.xlsx weg, überspringt direkt die ~test.xlsx und bricht dann das komplette robocopy ab?! Normalerweise sollte er doch merken, dass die ~test.xlsx in Benutzung ist (was er ja auch als Fehler ausgibt-.-) und dann den retry starten statt abzubrechen?!
 
Zuletzt bearbeitet:
Zurück
Oben