2011-09-21 24 views
12

Sto tentando di utilizzare forfiles per eliminare file di età superiore a 7 giorni. I file sono in un percorso UNC. Di seguito è riportato lo script che sto utilizzando.file forfile con percorso UNC

Forfiles -p \\devexpress\C$\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 

ma ottengo un errore di ricordare che i percorsi UNC (\ machine \ share) non sono supportati.

Sembra che siano disponibili soluzioni alternative ma non è possibile ottenere una risposta chiara su google.

risposta

11

L'errore che si verifica quando si tenta di riprodurre il problema indica che il problema non è con FORFILES non suportare UNC Path, ma con CMD che non è in grado di iniziare con un percorso UNC come directory predefinita. Nel caso in cui questo sia anche il tuo problema, ci sono tre approcci per risolverlo.

  1. si potrebbe assegnare il percorso UNC a una lettera del disco, tramite NET USE

    NET USE V: \\devexpress\C$ 
    Forfiles -p V:\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
    
  2. Si può bypassare CMD e direttamente utilizzare alcune utility eseguibile ERASEFILE direttamente l'opzione -C del FORFILES

  3. È possibile ignorare FORFILES e utilizzare il comando FOR con una certa logica di controllo della data. Vedere la mia risposta a questa domanda Stack Overflow How can I check the time stamp creation of a file in a Windows batch script?

54

soluzione avanzata per prima risposta della PA è:

PushD "\\devexpress\C$\FULL\" &&(
    forfiles -s -m *.* -d -7 -c "cmd /c del /q @path" 
    ) & PopD 

il comando pushd mappe il percorso UNC lettera di unità libera automaticamente, quindi questo è l'approccio portatile . Trovato in http://www.petri.co.il/forums/showthread.php?t=24241.

+0

Questo funziona davvero! Grazie @jirkamat –

+0

So che non dovresti dire "grazie", ma grazie! xD – Michael

Problemi correlati