PDA

View Full Version : Script: löschen von Dateien bestätigen


28-Mar-2005, 05:53 PM
Hallo, wie bringt man folgendes script dazu, das löschen der Dateien zu bestätigen?

load <default>
filter "-Desktop.ini";"-Thumbs.db"
criteria timestamp:IgnoreDST
option confirm:prompt
load "E:\Foto" "P:\Foto"
expand all
select left.newer.files left.diff.files left.orphan
copy left->right
select right.orphan
delete right

Gruß Gerald

chrroe
28-Mar-2005, 11:58 PM
Hallo Gerald!

</font><blockquote><font class="small">In Antwort auf:</font><hr />
wie bringt man folgendes script dazu, das löschen der Dateien zu bestätigen?


[/quote]

Füge einfach vor dem delete Befehl ein option confirm:yes-to-all ein.
Dann sollte es klappen ...

Die Syntax für den filter Befehl hast du glaube ich auch nicht 100%ig eingehalten. Laut Skript-Referenz im BC-Helpfile müsste es statt

filter "-Desktop.ini";"-Thumbs.db"

besser

filter "-Desktop.ini;-Thumbs.db"

heißen.

Aber wenn das bisher funktioniert, ist es auch gut :cool: .


Bye
Christoph

30-Mar-2005, 03:41 AM
Hallo Christoph, danke für die Antwort, hatte mich unklar ausgedrückt, wollte eigentlich: option confirm:prompt ;und das geht nicht ;Datei-Singles werden ohne Nachfrage gelöscht!

log verbose append:"X:\4t\ACTION\BC\2.TEST.log"
load <default>
filter "-.\.deleted\"
load "x:\time" "o:\fit\time"
expand all
select right.orphan
### 1.Test copyto:
#option confirm:yes-to-all # funktioniert
#option confirm:no-to-all # funktioniert
#option confirm:prompt # funktioniert
#copyto "o:\fit\time\.deleted"
### 2.Test delete:
#option confirm:yes-to-all # funktioniert
#option confirm:no-to-all # Datei-Singles werden trotzdem gelöscht!
option confirm:prompt # kein prompt, Datei-Singles werden gelöscht!
delete right

Gruß Gerald

chrroe
30-Mar-2005, 11:52 AM
Hi Gerald!

So, ich hab mir das ganze jetzt mal etwas näher angeschaut:
Die Dialoge, die mit dem option Befehl gesteuert werden können, sind nicht die selben, die in BC im Normalbetrieb beim Kopieren, Löschen etc. kommen.
Es handelt sich vielmehr um "Problem"-Dialoge, die während der Dateiaktionen auftreten können,

Das kannst du ganz leicht testen, in dem du einer Datei, die gelöscht werden soll, das Schreibschutz-Attribut gibst (Im Explorer unter Eigenschaften). Dann kommt nämlich im Normalfall ein Dialog, der fragt, ob die Datei wirklich gelöscht werden soll.
Diese Dialoge sind gemeint und bei meinen Tests funktonierte die Steuerung dieser mit dem option Befehl auch.

Wenn man Systemdateien löschen will, kommt auch ein entsprechender Dialog.

Ein Dialog, ob überhaupt mit dem Löschen angefangen werden soll, ist in Scripts selber vermutlich nicht möglich.
Als work-around könnte ich mir ein separates DOS Batchfile vorstellen, dass den Löschwunsch erst abfragt und dann ein BC Löschskript aufruft.


Bye
Christoph

30-Mar-2005, 02:18 PM
Hallo Christoph,
OK, das ist nachvollziehbar. Also: attrib +r
Das sieht dann so aus und funktioniert:

load "E:\Foto" "P:\Foto"
expand all
select right.orphan
attrib +r
option confirm:prompt
delete right

Danke für die Hilfe, Gruß Gerald

chrroe
31-Mar-2005, 02:39 AM
Hi!

Jo, das wäre denkbar.
Ich dachte aber eher an ein Batchskript, das am Anfang abfragt, ob es überhaupt ausgeführt werden soll. Damit erspart man sich die Attributsänderungen an den Dateien :) .

In etwa so (bc-lösch.bat):

SET /p ausfuehren=BC-Löschskript ausführen (j/n)?
if ausfuehren=j bc2.exe @bc-lösch.txt

Wobei bc-lösch.txt so aussehen könnte:

load "E:\Foto" "P:\Foto"
expand all
select right.orphan
option confirm:yes-to-all
delete right



Bye
Christoph

31-Mar-2005, 01:24 PM
Hallo Christoph,
diese Diskusion entwickelt sich ja zu: "was könnte man alles so machen mit BC."
...und mit "Batch" hab' ich schon vor ~10 Jahren so einiges gemacht; und immernoch...
OK. Deine Ideen sind echt gut! Aber ich muss nun doch einmal genau erklären worum es mir eigentlich geht.

Ich denke an folgendes Scenario: BC als Datensicherung. Die Fotos von E: sollen
auf P: gesichert werden. Kein Problem: *copy left->right*. Absichtlich gelöschte/umbenannte Files
sollen mit *select right.orphan* auch auf P: gelöscht werden. Jetzt hat aber irgendjemand
dummerweise aus versehen was aus E: gelöscht! Bei einer synchronisation mit BC-script ohne entsprechender Abfrage wäre nun auch
die Datensicherung zerstört. Deshalb meine Forderung nach einer Abfrage, ob die File-Singles auf P: wiklich gelöscht werden sollen.
Und das habe ich jetzt mit BC-script für mich so gelöst:

load <default>
filter "-Desktop.ini";"-Thumbs.db" # funktioniert übringens...
load "E:\Foto" "P:\Foto"
expand all
select left.newer.files left.diff.files left.orphan
copy left->right
select right.orphan
attrib +r
delete right
attrib -r #;-)
load... usw.
select... usw. ...sind bei mir insg. 184 Zeilen...

Der Witz an der Sache ist, dass BC-script anhält (vor dem löschen), ich mir angucken kann
welche Files nun mit *attrib +r* versehen worden sind, ich entscheiden kann, einzeln oder alle löschen,
und die nicht gelöschten bekommen: *attrib -r*.
So bekomme ich auf jeden Fall mit, ob Files auf E: gelöscht wurden.

Das ist für mich persönlich, für meine eigenen Files (nicht nur Fotos, auch Source-Code) OK.
...und wenn ich's genau wissen will: BC.exe - geniales Programm!
Gruss Gerald