Файлы с UNC-контуром
Я пытаюсь использовать файлы forfiles для удаления файлов старше 7 дней. Файлы находятся в UNC-пути. Ниже приведена script, которую я использую.
Forfiles -p \\devexpress\C$\FULL\ -s -m *.* -d -7 -c "cmd /c del /q @path"
Но я получаю сообщение об ошибке, указывающее, что UNC-пути (\ machine\share) не поддерживаются.
Доступны обходные пути, но не могут получить четкий ответ на поиск.
Ответы
Ответ 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
ухооо..это работа, спасибо джиркамат