Подтвердить что ты не робот

Файлы с UNC-контуром

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

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

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

Доступны обходные пути, но не могут получить четкий ответ на поиск.

4b9b3361

Ответ 1

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

  • вы можете назначить путь UNC к букве диска, используя NET USE

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

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

Ответ 2

Усовершенствованное решение для первого ответа PA:

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.

Ответ 3

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

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

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

Ответ 4

ухооо..это работа, спасибо джиркамат