файлы с UNC-путем - PullRequest
       7

файлы с UNC-путем

16 голосов
/ 21 сентября 2011

Я пытаюсь использовать forfiles для удаления файлов старше 7 дней.Файлы находятся в пути UNC.Ниже приведен скрипт, который я использую.

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

Но я получаю сообщение об ошибке, в котором говорится, что UNC-пути (\ machine \ share) не поддерживаются.

Кажется, что есть обходные пути, но не удается получить четкий ответ, поиск в Google.

Ответы [ 3 ]

64 голосов
/ 03 января 2012

Улучшенное решение первого ответа ПА:

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

Команда PushD автоматически сопоставляет путь UNC с буквой свободного диска, поэтому это переносимый подход. Найдено в http://www.petri.co.il/forums/showthread.php?t=24241.

14 голосов
/ 21 сентября 2011

Ошибка, возникающая при попытке воспроизвести проблему, говорит о том, что проблема не в том, что FORFILES не поддерживает UNC-путь, а в том, что CMD не может начать с UNC-пути в качестве каталога по умолчанию. Если это также ваша проблема, есть три подхода к ее решению.

  1. вы можете назначить UNC-путь к букве диска через NET USE

    NET USE V: \\devexpress\C$
    Forfiles -p V:\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path" 
    
  2. Вы можете обойти CMD и напрямую использовать некоторую исполняемую утилиту ERASEFILE непосредственно в опции -C FORFILES

  3. Вы можете обойти FORFILES и использовать команду FOR с некоторой логикой проверки даты. См. Мой ответ на этот вопрос переполнения стека Как проверить создание метки времени для файла в пакетном скрипте Windows?

0 голосов
/ 17 августа 2018

Я получил это на работу:

PushD "\\DS\Tajana\Arhiva\Arhive po danima" &&("forfiles.exe" /s /m "*.*" /d -7 /c "cmd /c del @path") & PopD

хотя я получаю сообщение об ошибке в окне cmd "не поддерживается UNC Path", но оно все равно удаляет файлы старше 7 дней

...