Закрыть все локально открытые файлы в данном каталоге

Я пытаюсь добавить шаг к пакетному процессу, чтобы убедиться, что все локальные файлы закрыты в определенном каталоге.

Все, что я могу найти, указывает мне на Net Files и Openfiles, но оба этих варианта закрывают только открытые файлы, доступ к которым осуществляется через общий ресурс (не локально).

Я просмотрел как Taskkill, так и Microsoft Handle Tool, но, насколько я могу судить, это не самый умный способ выполнить эту задачу.

Есть ли аналог Net Files, закрывающий файлы, открытые локально?

Любая помощь будет оценена по достоинству.


person JCbstn77    schedule 19.08.2013    source источник
comment
какую ОС вы имеете в виду?   -  person Nir Alfasi    schedule 20.08.2013
comment
Извините, я использую Windows Server 2008R2.   -  person JCbstn77    schedule 20.08.2013
comment
почему бы не использовать handle?   -  person Endoro    schedule 20.08.2013
comment
Я бы также рекомендовал handle. Однако обратите особое внимание на предупреждение в разделе «Использование».   -  person Ansgar Wiechers    schedule 20.08.2013
comment
Я еще не пробовал, но я прочитал пару предупреждений о том, что принудительное закрытие дескрипторов через handle.exe может вызвать нестабильность системы, поэтому я не был уверен, действительно ли это хорошая идея делать это каждую ночь. Я постараюсь посмотреть немного глубже на ручке.   -  person JCbstn77    schedule 20.08.2013
comment
закрытие дескрипторов файлов после BS может привести к сбою системы, независимо от того, какой инструмент вы используете.   -  person Endoro    schedule 20.08.2013
comment
Вы должны лучше изучить, что на самом деле держит эти ручки открытыми. Как сказал Эндоро, проблема заключается не в используемом вами инструменте, а в том, что вы принудительно закрываете дескрипторы, которые, как ожидает приложение, все еще открыты. Почему вы считаете, что вам это нужно в первую очередь?   -  person Ansgar Wiechers    schedule 20.08.2013
comment
На самом деле проблема довольно проста: время от времени я случайно оставляю открытым блокнот или командную строку в моем каталоге сборки. Когда ANT пытается удалить каталог, это не удается, потому что файл или каталог открыты. Это оставляет мой каталог сборки в плохом состоянии. Когда сборка запускается, она терпит неудачу. Я хочу установить отказоустойчивость, которая гарантирует, что в каталоге ничего не открыто. На самом деле это случается довольно редко - я просто хотел сделать дополнительный шаг, чтобы убедиться, что ничего не открыто.   -  person JCbstn77    schedule 20.08.2013
comment
Если бы они были открыты из общего сетевого ресурса, Net File или Openfiles позаботились бы об этом, но, к сожалению, это всегда остается открытым непосредственно на сервере.   -  person JCbstn77    schedule 20.08.2013


Ответы (1)


вы можете попробовать это с handle в командной строке:

for /f "tokens=2 delims=:" %a in ('handle "c:\folder"') do @for /f %b in ("%~a") do @echo handle -c %~b

Удалите echo, если результат выглядит хорошо.

person Endoro    schedule 20.08.2013