Podemos ficar muito próximos com o PsExec e com um pequeno trabalho em lote.
No seu servidor / VM, vamos querer amarrar, não complicar , um comando de liberação no existente renomeie e exclua comandos no prompt de comando. A prioridade implícita é que seja tão perfeita quanto possível .
Primeiro, para habilitar a execução da rede PsExec nos clientes, crie um arquivo reg:
clients-enable-psexec.reg:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"LocalAccountTokenFilterPolicy"=dword:00000001
Isso garantirá que os clientes executem comandos enviados pelo servidor / VM.
No lado do servidor, faça o download do PsExec do site do TechNet na sua VM do servidor
Em seguida, coloque esses arquivos .bat em um diretório de ambiente do sistema , para que eles possam ser chamados de qualquer lugar no servidor / VM:
x-del.bat (argumento: arquivo; substituto do comando del
)
psexec \* c:\client-release.bat %~n1 :: \* = all network clients, %~n1 = filename
timeout /t 3
del %1
x-ren.bat (argumento: arquivo, nome)
psexec \* c:\client-release.bat %~n1
timeout /t 3
ren %1 %2
Coloque este arquivo .bat em todos os clientes:
client-release.bat (argumento: compartilhamento de arquivos para fechar)
setlocal enabledelayedexpansion
net file > c:\temp.txt
for /F "tokens=*" %%A in (c:\temp.txt) do ( :: Loop through net file output line by line
echo.%%A | findstr /I /C:"%1">nul && ( :: Check if entry contains file in question
set vara=%%A
set varb=!vara:~0,1! :: First char of line output is PID of of file
net file !varb! /close
) || (
rem not found, move on
)
)
del c:\temp.txt
Uso do comando:
c:\> del Z:\ServerFolders\file.doc
File could not be deleted: in use
c:\> ren Z:\ServerFolders\file.doc newfile.doc
Access Denied
c:\> x-del Z:\ServerFolders\file.doc
File Deleted Sucessfully
c:\> x-ren Z:\ServerFolders\file.doc newfile.doc
Renamed
c:\>
O Real Override:
Se você quiser substituir o comando del
real e outros comandos internos para uso em arquivos em lote com controle de versão, etc, você pode usar essa mágica:
setdos /i-del
alias del=c:\windows\system32\x-del.bat
setdos /i-ren
alias ren=c:\windows\system32\x-ren.bat
A pegadinha?
Você precisa de um prompt de comando de terceiros instalado junto com o cmd padrão do Windows: Comando Take do JPSoft
Comandos acima tomados daqui: Substituir Comandos Internos do TCC - JPSoft