PDA

Visualizza versione completa : Alternativa al comando deltree su windows 2003 R2



Asterix
15-02-13, 11: 20
Ciao ragazzi

in questi giorni mi trovo a dover creare un file batch per far cancellare in cron il contenuto di una cartella utilizzata come deposito temporaneo.

La cartella è presente su un server 2003R2 in dominio, attualmente tutti gli user hanno i permessi di sicurezza full pertanto possono creare cancellare ecc all'interno di essa.

io nei vecchi sistemi utilizzavo il comando deltree /y d:/user/deposito/*.* e grazie ad esso cancellavo tutto il contenuto della cartella deposito (files e directory) ora con il 2003R2 non esiste e in alternativa ho utilizzato rmdir d:\user\deposito\ e grazie a questo cancello la cartella deposito e il suo contenuto.

Con il comando rm ho la necessità di ricreare ogni volta la cartella e per questo utilizzo mk d:\user\deposito\ peccato che i permessi non sono full ma ristretti.

La mia domanda è la seguente, come posso variare il file batch al fine di ottenere la pulizia della cartella deposito, mantenendo i permessi full per gli utenti del mio dominio ?


Only registered members can view code.

non mi dite utilizza del d:\user\deposito\*.* in quanto cancella si tutti i files ma lascia le cartelle e questo per me non va bene.

Grazie mille.

:bai

Andy86
15-02-13, 16: 30
:bai

La prima cosa che mi viene in mente è quella di processare l'output del comando 'dir' per eseguire poi il singolo comando su ogni file.

Visto che avevo un po' di tempo ti ho buttato giù un esempio già funzionante, devi solo sostituire la workdir con quella sulla quale vuoi eseguire lo svuotamento. (non mettere la / finale perché è già presente nella stringa "%workdir%\%%a")


Only registered members can view code.

Se vuoi spiegazioni più dettagliate sul funzionamento dello script sono a tua disposizione. :hap

ps: la sezione "programmare, si grazie.", che ci sta a fare se poi di script ne parliamo nella sezione software? :m:

Asterix
15-02-13, 18: 55
Grazie

lo proverò lunedì, ora non ho la possibilità.


la sezione "programmare, si grazie.", che ci sta a fare se poi di script ne parliamo nella sezione software?

Non pensavo ad un programma pensavo qualche riga dos semplice, comunque ho errato e ho spostato grazie

:bai

Kirk78
17-02-13, 00: 09
La butto lì e prendilo con le pinze perché non so se funziona, sopratutto su Windows Server

Only registered members can view code.


If command extensions are enabled (that is, the default), the following additional forms of for are supported:
Directories only
If set contains wildcards (* and ?), the specified command executes for each directory (instead of a set of files in a specified directory) that matches set. The syntax is:

for /D {%% | %}variable in (set) do command [CommandLineOptions]

Ma vedo che lo script di Andy86 è un po' più avanzato e fa anche il del (anche se non vedo /s /q) quindi non mi prendo responsabilità :eye, sopratutto su un Server... e di microsoft!
Facci sapere.

:bai

Andy86
17-02-13, 10: 53
:bai

Penso che i nostri script facciano esattamente la stessa cosa (anche se ho dimenticato /s davanti a del) ma con scritture diverse del comando for.

Probabilmente il /d implica dir, invece /f va su qualunque comando.

Per intenderci, questa scrittura:

do rd %i /s /q

è equivalente a questa:

do (
rd %i /s /q
)

solo che la prima scrittura (compatta) vale solo per un comando solo, mentre se usi le parentesi puoi inserire in coda tutti i comandi che vuoi, esattamente come gli altri linguaggi utilizzano le grafe. (che penso conosci).

ps: non sono sicuro che basti una % per leggere le variabili del for, di solito si usa %1, %2, %3, ecc... per leggere i parametri passati esternamente allo script, es. eseguire lo script su di un file (mediainfo.bat ciao.avi), mentre per le variabili del for si fa %%i, %%a, %%b, ecc..., e infine per le variabili dichiarate a mano si fa %a%, %b%, %c%... (che casino... :wall) :m:

Asterix
20-02-13, 11: 35
Non so come mai ma il codice fornito da Andy non elimina tutto, dovrei aver risolto con questo codice trovato nel web


Only registered members can view code.

:bai

Andy86
20-02-13, 14: 17
:bai

A me sembra identico tranne che per i nomi delle variabili e il cd che viene fatto prima, anziché riportare il percorso ad ogni comando... :m:
Potrebbe essere che eseguendolo lato server ci siano problemi a riportare il percorso tramite variabili. :boh

ps: echo on all'inizio di uno script non ha senso, è già on di default. :ghgh

Kirk78
21-02-13, 21: 29
ps: echo on all'inizio di uno script non ha senso, è già on di default. :ghgh
Vero, ma ho scoperto in passato che alle volte sui server l'echo su "terminale" (Prompt di comandi) non era on, forse poteva essere modificato da settaggio server :boh. Ormai è da parecchio che ho abbandonato i problemi del server di win quindi è per questo che andavo con i piedi di piombo.

Comunque l'importante è che il nostro caro Asterix abbia risolto. Alla prossima, che noi siamo sempre quì pronti ad aiutare!

:bai