2013-09-08 2 views
0

Я пытаюсь создать файл .CMD, чтобы легко скопировать и вставить исправленный файл (т. Е. Test.pdf), перезаписывающий старый файл с новым. Проблема в том, что если старый файл в настоящее время открыт пользователем в сети, я не могу его наклеить или удалить. Я попытался использовать команду DEL /F "test.pdf", но она по-прежнему не принудительно удаляет. Я знаю, что есть команда net file <ID> /close, но <ID> динамична и никогда не будет одинаковой дважды. Есть ли способ определить <ID> файла в скрипте, который знает путь и имя файла? Или есть другой способ закрыть открытый файл в CMD-файле? Другая проблема заключается в том, что несколько пользователей могут одновременно открывать файл ...Команда Закрыть файл Open

Примечание: Я знаю, что закрытие открытого файла не является хорошей практикой, поскольку это может привести к потере данных, однако это просто файл PDF, который я заменяю , Даже если старый файл поврежден, его все равно стирают.

+0

Вы можете запланировать замену файла в то время ночи, когда никто не будет доступа к файлу? – foxidrive

+0

Посмотрите на psfile.exe http://ss64.com/nt/psfile.html –

+0

@Kayasax Я не могу найти загрузку папки PSTools.zip, которая не окажется пустой (хотя размер> 1MB) ... –

ответ

0

В соответствии с информацией о выходе сетевого файла на этой странице http://technet.microsoft.com/en-us/library/bb490702.aspx некоторый код, подобный этому, получит идентификатор файла.

@echo off 
for /f %%a in (' net file ^|find /i "myfilename.pdf" ') do net file %%a /close 
+0

Не удалось ли это работать? – foxidrive

0

Я использовал программу Unlocker v1.9.2, созданную пустым контуром. Unlcoker 1.9.2 Существует бесплатная версия с утилитой командной строки, где вы вызываете файл .exe с параметрами (путь к файлу) для разблокировки. Работала отлично.

0

Вы также можете упростить это, используя psfile.exe из пакета sysinternals. просто измените полный путь для test.pdf, чтобы указать родительский каталог test.pdf.

psfile.exe \\(remote computer) (full path to parent directory of test.pdf) -c

пример: psfile.exe \\computer1 C:\pdfs\test -c