2017-02-06 4 views
0

Описание того, что хотел: Закройте все открытые SHARED PDF файлы (так что файл может быть перезаписана)PsFile Закрыть Открыт Shared PDF в - REGEX

После многих попыток с OPENFILES и NET FILE, я пришел, чтобы, наконец, используя PSFILE запрашивает и закрывает открытые PDF-файлы, однако, поскольку PSFILE сообщает о скобках открытого файла ID INSIDE ... команда закрыть файл не будет завершена из-за скобок.

Пожалуйста, простите, что я скопировал и вставил код ниже ... Я учусь, так что я не уверен, что команда Findstr ниже (регулярных выражений часть) на самом деле делает, но это, кажется, найти все открытые PDF-

Пример:

for /F %a in ('psfile \\servername ^|findstr /i "\\.*\.pdf"') do psfile \\servername %a /c 

Результат приведенного выше кода найдет открытые PDF-файлы. PsFile отображает результаты в этом формате:
УВЕДОМЛЕНИЕ Скобки вокруг ID

[2214593372] D:\PATH TO\FILE.PDF 
User: USERNAME 
Locks: 0 
Access: Read 

Из-за скобки вокруг идентификационного номера заключительной части кода:

do psfile \\servername %a /c 

Reports - УВЕДОМЛЕНИЕ КРЕПЛЕНИЯ

psfile \\wgdfp01 [2214593372] /c 

Какие затем сообщает отказ:

No files opened remotely on SERVERNAME. 

Может кто-нибудь, пожалуйста, помогите мне ... Если бы я мог заставить его не сообщать скобки ... то последняя часть кода должна работать?

{EDIT} Ответ всегда будет [NNNNNNNNNNN] N = 0-9 Я просто нужно, чтобы передавать только цифры в скобках в команде. Я не буду утомлять вас различными комбинациями, которые я пробовал для регулярных выражений. Но когда я добавляю что-то к^| он ответит | не ожидается в это время.

СПАСИБО

ответ

0

Это, кажется, устраняет проблему.

@ECHO OFF 
FOR /f %%A IN ('psfile \\SERVERNAME ^| findstr /i "\\.*\.pdf"') DO call:CallFunction %%A 

GOTO Exit 

:CallFunction 
SET foo=%~1 
SET foo=%foo:[=% 
SET foo=%foo:]=% 
psfile \\SERVERNAME %foo% /c 

:Exit