2011-09-21 15 views
12

Próbuję użyć forfiles do usunięcia plików starszych niż 7 dni. Pliki znajdują się w ścieżce UNC. Poniżej znajduje się skrypt, którego używam.forfiles ze ścieżką UNC

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

Ale pojawia się błąd informujący, że ścieżki UNC (\ machine \ share) nie są obsługiwane.

Wygląda na to, że są dostępne obejścia, ale nie można uzyskać jasnej odpowiedzi na google.

Odpowiedz

11

Błąd, który pojawia się podczas próby odtworzenia problemu, mówi, że problem nie dotyczy FORFILI, które nie wspierają ścieżki UNC, ale nie można uruchomić CMD ze ścieżką UNC jako domyślnym katalogiem. W przypadku, gdy jest to również twój problem, istnieją trzy podejścia do jego rozwiązania.

  1. można przypisać ścieżkę UNC do litery dysku, poprzez NET USE

    NET USE V: \\devexpress\C$ 
    Forfiles -p V:\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
    
  2. Możesz ominąć CMD i bezpośrednio korzystać z niektórych ERASEFILE wykonywalny narzędzia bezpośrednio w -C opcją na FORFILES

  3. Możesz ominąć FORFILES i użyć polecenia FOR z pewną logiką sprawdzania daty. Zobacz moją odpowiedź na to przepełnienie stosu pytanie How can I check the time stamp creation of a file in a Windows batch script?

54

Ulepszone rozwiązanie do pierwszej odpowiedzi na PA jest:

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

Komenda PUSHD mapuje ścieżkę UNC do swobodnego literą napędu automatycznie, więc jest przenośny podejście . Znalezione w http://www.petri.co.il/forums/showthread.php?t=24241.

+0

To faktycznie działa! Dzięki @jirkamat –

+0

Wiem, że nie powinieneś mówić "dziękuję", ale dziękuję! xD – Michael

Powiązane problemy