2016-07-15

Dica rápida: limpar cache de WTT e eFilm


Aviso: MERGE eFILM Workstation e WTT PACS Solutions são produtos protegidos por direitos autorais, assim como suas marcas. O presente script foi desenvolvido por mim exclusivamente sem qualquer auxílio, colaboração, orientação ou permissão das empresas citadas. Caso não compreenda o conteúdo do script oferecido aqui, por favor não o utilize. Também não me responsabilizo por qualquer prejuízo decorrente de qualquer opinião ou código apresentado aqui. Cautela!

O script ao contrário não possui qualquer tipo de licenciamento. Você é livre para fazer o que quiser com ele: botar fogo, vendê-lo para inocentes, dizer que é seu, distribuir aos carentes, modificá-lo de tantas formas que quem sabe ele poderá assim até funcionar um dia!

Introdução: o setor de imagens médicas trabalha com um formato que gera grandes arquivos com alta qualidade de imagem: DICOM. A manipulação deste tipo de arquivo é constante em clínicas de ressonância como a empresa que trabalho e com ele a necessidade de exclusão constante dos arquivos baixados nas workstations após serem laudados e revisados. Para mitigar o espaço usado por esta duas aplicações, ofereço o presente script.

Cenário: todas as máquinas possuem as mesmas configurações.
  • Windows 7 Professional, Service Pack 1, x64, pt_BR;
  • Merge eFilm Workstation 2.0.3 built 5;
  • WTT PACS Solutions rolling release;

O script tem uma série de exigências, ele precisa estar presente e ser executado de dentro de um determinado diretório, ter um certo nome de arquivo, estar acompanhando de determinados arquivos, ter acesso à internet, existir um interpretador WSH 5.7 ativo, existir um backup do banco de dados vazio zipado do eFilm, o relógio do sistema precisa estar menos de 15 segundos divergente de um servidor NTP Microsoft e o usuário executante deve possuir direito de escrita e leitura em disco dentro dos diretórios acessados. Veja abaixo:

a) diretório: %userprofile%\scriptsclinicadia\laudos
b) nome: script-clinica-dia-laudos.cmd

c) arquivo: 7zip.exe
d) arquivo: calculatefreespace.js
e) arquivo: testifthereiswsf.js
f) arquivo: DICOMdb.zip, em:
   C:\Program Files (x86)\Merge eFilm\eFilm\Database\
g) *o arquivo DICOMdb.zip contém uma cópia zipada e sem pastas do banco de dados do eFilm assim que ele termina de ser instalado e configurado pela primeira vez.
h) serviço: w32tm
i) diretório: logs
j) programas fechados: WTT e eFilm
k) leitura e escrita em:
    C:\Program Files (x86)\Merge eFilm\eFilm\ e subpastas

l) leitura e escrita em:  %temp%\dstemp\CACHE
m) leitura e escrita em:  %temp%\dstemp\upload


Ufa! Pode parecer meio absurdo muita coisa listada como exigência, mas assim que começar a trabalhar com o Agendador de Tarefas do Windows muita coisa ficará mais clara!

script-clinica-dia-laudos.cmd
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
:: Amplia o tamanho do console
@echo off & MODE CON: COLS=125
echo ------------------------------------------------------------
echo                Script de Manutencao 
echo                   Clinica Dia
echo                ver 2.0 para laudos
echo ------------------------------------------------------------
echo.
echo.
echo Este script possui uma serie de exigencias:
echo * Este arquivo deve se chamar script-clinica-dia-laudos.cmd e estar presente em %userprofile%\scriptsclinicadia\laudos
echo * O arquivo 7zip.exe deve estar presente em %userprofile%\scriptsclinicadia\laudos [sem controle de versao no momento]
echo * O arquivo calculatefreespace.js versao 1.0 deve estar presente em %userprofile%\scriptsclinicadia\laudos
echo * O arquivo testifthereiswsf.js versao 1.0 deve estar presente em %userprofile%\scriptsclinicadia\laudos
echo * O arquivo DICOMdb.zip precisa ter sido criado e estar presente no diretorio correspondente
echo * O intepretador de comandos WSH 5.7 deve estar presente e ativo
echo * O relogio precisa ter menos de 15 segundos de diferenca de um servidor NTP seguro [sem email de respota nesta versao]
echo * WTT e eFILM precisam estar fechados
echo.
echo.

:: Salva o dia informado pelo sistema em formato YYYY.MM.DD (string)
set dataformatada=%date:~-4%.%date:~-7,2%.%date:~0,2%

:: Salva o dia informado pelo sistema em formato YYYYMMDD (numerico)
set /a datanumerica=%date:~-4%%date:~-7,2%%date:~0,2%

:: Salva o dia e hora do arquivo nos formatos: YYYYMMDD (numerico) e HHMM (string)
set filefulldate=%~t0
set /a filedatanumerica=%filefulldate:~6,4%%filefulldate:~3,2%%filefulldate:~0,2%
set filehorastring=%filefulldate:~11,2%%filefulldate:~14,2%

:: Verifica se o script esta usando a nomenclatura padrao
set nomedobatch=%~nx0
IF %nomedobatch%==script-clinica-dia-laudos.cmd (
   echo %dataformatada% %time:~0,-3% Script iniciado com o nome correto.
   echo %dataformatada% %time:~0,-3% Script iniciado com o nome correto. > "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Script iniciado com o nome correto. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Script iniciado com o nome incorreto. file:%nomedobatch%
   echo %dataformatada% %time:~0,-3%   ERRO: Script iniciado com o nome incorreto. file:%nomedobatch% > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Script iniciado com o nome incorreto. file:%nomedobatch% >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

set diretoriodobatch=%cd%
IF "%diretoriodobatch%"=="%userprofile%\scriptsclinicadia\laudos" (
   echo %dataformatada% %time:~0,-3% Script iniciado no diretorio correto.
   echo %dataformatada% %time:~0,-3% Script iniciado no diretorio correto. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Script iniciado no diretorio correto. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Diretorio inicial incorreto. dir: "%diretoriodobatch%"
   echo %dataformatada% %time:~0,-3%   ERRO: Diretorio inicial incorreto. dir: "%diretoriodobatch%" > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Diretorio inicial incorreto. dir: "%diretoriodobatch%" >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

:: Verifica se os arquivos necessarios estao presentes: 7za.exe, testifthereiswsf.js, calculatefreespace.js e DICOMdb.zip
IF EXIST "%userprofile%\scriptsclinicadia\laudos\7za.exe" (
   echo %dataformatada% %time:~0,-3% Encontrado 7za.exe.
   echo %dataformatada% %time:~0,-3% Encontrado 7za.exe. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Encontrado 7za.exe. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado 7za.exe.
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado 7za.exe. > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado 7za.exe. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

IF EXIST "%userprofile%\scriptsclinicadia\laudos\testifthereiswsf.js" (
   echo %dataformatada% %time:~0,-3% Encontrado testifthereiswsf.js.
   echo %dataformatada% %time:~0,-3% Encontrado testifthereiswsf.js. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Encontrado testifthereiswsf.js. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado testifthereiswsf.js.
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado testifthereiswsf.js. > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado testifthereiswsf.js. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

IF EXIST "%userprofile%\scriptsclinicadia\laudos\calculatefreespace.js" (
   echo %dataformatada% %time:~0,-3% Encontrado calculatefreespace.js.
   echo %dataformatada% %time:~0,-3% Encontrado calculatefreespace.js. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Encontrado calculatefreespace.js. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado calculatefreespace.js.
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado calculatefreespace.js. > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado calculatefreespace.js. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

IF EXIST "C:\Program Files (x86)\Merge eFilm\eFilm\Database\DICOMdb.zip" (
   echo %dataformatada% %time:~0,-3% Encontrado DICOMdb.zip.
   echo %dataformatada% %time:~0,-3% Encontrado DICOMdb.zip. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Encontrado DICOMdb.zip. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado DICOMdb.zip.
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado DICOMdb.zip. > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Nao foi encontrado DICOMdb.zip. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

:: Verifica se o interpretador de comandos WSH esta presente e ativo
echo limpandoarquivoteste > "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
cscript.exe /nologo testifthereiswsf.js > "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
set /P verificawsf=<"%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
IF %verificawsf%==foundandworkingwsf (
   echo %dataformatada% %time:~0,-3% Encontrado interpretador WSH e funcionando.
   echo %dataformatada% %time:~0,-3% Encontrado interpretador WSH e funcionando. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Encontrado interpretador WSH e funcionando. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Interpretador WSF nao encontrado.
   echo %dataformatada% %time:~0,-3%   ERRO: Interpretador WSF nao encontrado. > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Interpretador WSF nao encontrado. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

:: Verifica se o relogio diverge por mais de 15 segundos
w32tm /stripchart /computer:time.windows.com /dataonly /samples:3 > "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
set deltatempo="00"
for /F "skip=3 tokens=2 delims= " %%L in (script-clinica-dia-inputfile.txt) do set deltatempo=%%L
set deltatempo=%deltatempo:~1%
set tempoabsoluto="00"
for /F "delims=." %%t in ("%deltatempo%") do set tempoabsoluto=%%t
set /a tempoabsoluto=%tempoabsoluto%
IF %tempoabsoluto% LEQ 15 (
   echo %dataformatada% %time:~0,-3% Relogio atualizado.
   echo %dataformatada% %time:~0,-3% Relogio atualizado. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Relogio atualizado. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Relogio incorreto. Diferenca de %tempoabsoluto% segundos.
   echo %dataformatada% %time:~0,-3%   ERRO: Relogio incorreto. Diferenca de %tempoabsoluto% segundos. > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Relogio incorreto. Diferenca de %tempoabsoluto% segundos. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   GOTO finaldoarquivo
)

:: FECHAR OS APLICATIVOS
echo %dataformatada% %time:~0,-3% Fechando WTT e eFilm. [Operacao nao monitorada em log]
taskkill /FI "IMAGENAME eq dstation.exe" /F > nul 2>&1
taskkill /FI "IMAGENAME eq eFilm.exe" /F > nul 2>&1

:: Verificar espaco em DISCO inicial
wmic logicaldisk where DriveType='3' get DeviceID, FreeSpace, Size | find ":" | cscript.exe /nologo calculatefreespace.js > "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
echo %dataformatada% %time:~0,-3% Estado inicial dos discos:
echo %dataformatada% %time:~0,-3% Estado inicial dos discos: >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% Estado inicial dos discos: >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
echo --------------------------------------------------------------------------------
type "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
echo --------------------------------------------------------------------------------
type "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt" >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
type "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt" >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"

:: REALIZAR A TAREFA: Limpar DSTEMP
echo %dataformatada% %time:~0,-3% Inicio da tarefa: limpar dstemp.
echo %dataformatada% %time:~0,-3% Inicio da tarefa: limpar dstemp. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% Inicio da tarefa: limpar dstemp. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
:: REM ALL: forfiles /P "%temp%\dstemp\CACHE" /M * /C "cmd /c if @isdir==TRUE ( echo @fdate @ftime DIR: @path ) else ( echo @fdate @ftime FLE: @path )"
:: REM DBG: forfiles /P "%temp%\dstemp\CACHE" /M * /D -4 /C "cmd /c if @isdir==TRUE ( echo @fdate @ftime DIR: @path ) else ( echo @fdate @ftime FLE: @path )"
:: REM WRK: forfiles /P "%temp%\dstemp\CACHE" /M * /D -4 /C "cmd /c if @isdir==TRUE ( rmdir /S /Q @path) else ( del /F /Q @path )"
IF EXIST %temp%\dstemp\CACHE ( 
  echo %dataformatada% %time:~0,-3% :.Apagando arquivos em dstemp\CACHE com mais de 3 dias. [Operacao nao monitorada em log]
  echo --------------------------------------------------------------------------------
  forfiles /P "%temp%\dstemp\CACHE" /M * /D -4 /C "cmd /c if @isdir==TRUE ( rmdir /S /Q @path ) else ( del /F /Q @path )"
  echo --------------------------------------------------------------------------------
) ELSE (
  echo %dataformatada% %time:~0,-3% Diretorio CACHE nao encontrado [Operacao nao monitorada em log]
)
:: REM ALL: forfiles /P "%temp%\dstemp\upload" /M * /C "cmd /c if @isdir==TRUE ( echo @fdate @ftime DIR: @path ) else ( echo @fdate @ftime FLE: @path )"
:: REM DBG: forfiles /P "%temp%\dstemp\upload" /M * /D -4 /C "cmd /c if @isdir==TRUE ( echo @fdate @ftime DIR: @path ) else ( echo @fdate @ftime FLE: @path )"
:: REM WRK: forfiles /P "%temp%\dstemp\upload" /M * /D -4 /C "cmd /c if @isdir==TRUE ( rmdir /S /Q @path ) else ( del /F /Q @path )"
IF EXIST %temp%\dstemp\upload ( 
  echo %dataformatada% %time:~0,-3% :.Apagando arquivos em dstemp\upload com mais de 3 dias. [Operacao nao monitorada em log]
  echo --------------------------------------------------------------------------------
  forfiles /P "%temp%\dstemp\upload" /M * /D -4 /C "cmd /c if @isdir==TRUE ( rmdir /S /Q @path ) else ( del /F /Q @path )"
  echo --------------------------------------------------------------------------------
) ELSE (
  echo %dataformatada% %time:~0,-3% Diretorio UPLOAD nao encontrado [Operacao nao monitorada em log]
)
echo %dataformatada% %time:~0,-3% Fim da tarefa: limpar dstemp.
echo %dataformatada% %time:~0,-3% Fim da tarefa: limpar dstemp. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% Fim da tarefa: limpar dstemp. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"

:: REALIZAR A TAREFA: Limpar eFILM DICOM
echo %dataformatada% %time:~0,-3% Inicio da tarefa: limpar eFILM DICOM.
echo %dataformatada% %time:~0,-3% Inicio da tarefa: limpar eFILM DICOM. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% Inicio da tarefa: limpar eFILM DICOM. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
:: REM OLD: del /F /S /Q "C:\Program Files (x86)\Merge eFilm\eFilm\DICOM\*.*"
:: REM OLD: forfiles /P "C:\Program Files (x86)\Merge eFilm\eFilm\DICOM" /M * /S /C "cmd /c rmdir /S /Q @path"
:: REM DBG: forfiles /P "C:\Program Files (x86)\Merge eFilm\eFilm\DICOM" /M * /C "cmd /c if @isdir==TRUE (echo DIR: @fdate @ftime @path) else (echo FLE: @fdate @ftime @path)"
echo --------------------------------------------------------------------------------
forfiles /P "C:\Program Files (x86)\Merge eFilm\eFilm\DICOM" /M * /C "cmd /c if @isdir==TRUE (rmdir /S /Q @path) else (del /F /Q @path)"
echo --------------------------------------------------------------------------------
echo %dataformatada% %time:~0,-3% Fim da tarefa: limpar eFILM DICOM.
echo %dataformatada% %time:~0,-3% Fim da tarefa: limpar eFILM DICOM. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% Fim da tarefa: limpar eFILM DICOM. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"

:: REALIZAR A TAREFA: Apagar banco de dados eFILM
IF EXIST "C:\Program Files (x86)\Merge eFilm\eFilm\Database\DICOMdb.ldb" (
  del /F /Q "C:\Program Files (x86)\Merge eFilm\eFilm\Database\DICOMdb.ldb"
) ELSE (
  echo %dataformatada% %time:~0,-3% Arquivo DICOMdb.ldb nao encontrado [Operacao nao monitorada em log]
)

IF EXIST "C:\Program Files (x86)\Merge eFilm\eFilm\Database\DICOMdb.mdb" (
  del /F /Q "C:\Program Files (x86)\Merge eFilm\eFilm\Database\DICOMdb.mdb"
) ELSE (
  echo %dataformatada% %time:~0,-3% Arquivo DICOMdb.mdb nao encontrado [Operacao nao monitorada em log]
)

:: REALIZAR A TAREFA: Restaur banco vazio do eFILM
pushd "C:\Program Files (x86)\Merge eFilm\eFilm\Database\"
"%userprofile%\scriptsclinicadia\laudos\7za.exe" e DICOMdb.zip > nul 2>&1
IF %ERRORLEVEL% EQU 0 (
   echo %dataformatada% %time:~0,-3% Banco vazio do eFILM restaurado com sucesso.
   echo %dataformatada% %time:~0,-3% Banco vazio do eFILM restaurado com sucesso. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
   echo %dataformatada% %time:~0,-3% Banco vazio do eFILM restaurado com sucesso. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
)  ELSE (
   echo %dataformatada% %time:~0,-3%   ERRO: Banco vazio do eFILM nao foi restaurado!
   echo %dataformatada% %time:~0,-3%   ERRO: Banco vazio do eFILM nao foi restaurado! > "%userprofile%\scriptsclinicadia\laudos\logs\laudoserros.log"
   echo %dataformatada% %time:~0,-3%   ERRO: Banco vazio do eFILM nao foi restaurado! >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoserroscontinuo.log"
   popd
   GOTO finaldoarquivo   
)
popd

:: Verificar espaco em DISCO final
wmic logicaldisk where DriveType='3' get DeviceID, FreeSpace, Size | find ":" | cscript.exe /nologo calculatefreespace.js > "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
echo %dataformatada% %time:~0,-3% Estado final dos discos:
echo %dataformatada% %time:~0,-3% Estado final dos discos: >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% Estado final dos discos: >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
echo --------------------------------------------------------------------------------
type "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
echo --------------------------------------------------------------------------------
type "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt" >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
type "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt" >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"

:: Mensagens finais
echo %dataformatada% %time:~0,-3% Final do script.
echo %dataformatada% %time:~0,-3% Final do script. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% Final do script. >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"
echo %dataformatada% %time:~0,-3% --------------------------------------------------
echo %dataformatada% %time:~0,-3% -------------------------------------------------- >> "%userprofile%\scriptsclinicadia\laudos\logs\laudos.log"
echo %dataformatada% %time:~0,-3% -------------------------------------------------- >> "%userprofile%\scriptsclinicadia\laudos\logs\laudoscontinuo.log"

:finaldoarquivo
TIMEOUT /NOBREAK /T 300

calculatefreespace.js
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/**
 * WINDOWS SCRIPT JSCRIPT
 *
 * Calculate Free Space from a specific wmic input.
 *   calculatefreespace.js
 *   version: 1.0
 *
 * Script para tratar resultado do WMIC:
 *   wmic logicaldisk where DriveType='3' get DeviceID, FreeSpace, Size
 *   wmic logicaldisk where DriveType='3' get DeviceID, FreeSpace, Size | find ":"
 *
 * CALL ME:
 *   cscript.exe /nologo calculatefreespace.js
 *   or
 *   wscript.exe calculatefreespace.js
 *
 * USE ME:
 *   wmic logicaldisk where DriveType='3' get DeviceID, FreeSpace, Size | find ":" | cscript.exe /nologo calculatefreespace.js
 *
 * SEE:
 *   wmic logicaldisk where DriveType='3' get DeviceID, FileSystem, FreeSpace, Size, VolumeName, VolumeSerialNumber 
 *
 * SEE:
 *   https://msdn.microsoft.com/en-us/library/4yyeyb0a.aspx
 *   https://msdn.microsoft.com/en-us/library/yek4tbz0.aspx
 *
 *   Special Characters
 *   https://msdn.microsoft.com/en-us/library/2yfce773.aspx
 *
 *   Operators
 *   https://msdn.microsoft.com/en-us/library/6hsc0eak.aspx
 *   https://msdn.microsoft.com/en-us/library/z3ks45k7.aspx
 *
 */

var i = 0;
var entrada = new Array();
var root = new Array();

// Lê a entrada como uma stream de dados do console
while (!WSH.StdIn.AtEndOfStream){
   entrada[i] = WSH.StdIn.ReadLine();
   i++;
}

// Exibe o cabeçalho
WSH.Echo("Drive / Free Space / Full Space / Used Space");


for(i=0; i < entrada.length;i++) {

   /**
   // olny for debug purposes
   WSH.Echo("Entrada: "+entrada[i]);
   */
   
   // Lê o primeiro pedaço || Remove o primeiro pedaço || Limpa espaços
   root[i] = entrada[i].split(" ",1);
   entrada[i] = entrada[i].slice((root[i].length+1));
   entrada[i] = entrada[i].replace(/^\s+|\s+$/gm,'');

   // Lê o segundo pedaço || Remove o segundo pedaço || Limpa espaços
   root[i].freespace = entrada[i].split(" ",1).toString();
   entrada[i] = entrada[i].slice((root[i].freespace.length+1));
   entrada[i] = entrada[i].replace(/^\s+|\s+$/gm,'');

   // Le o terceiro pedaço
   root[i].fullspace = entrada[i].toString();
   
   /**
   // olny for debug purposes
   WSH.Echo("Root: "+root[i]);
   WSH.Echo("Free: "+root[i].freespace);
   WSH.Echo("Full: "+root[i].fullspace);
   */
   root[i].freespace = parseFloat(root[i].freespace);
   root[i].fullspace = parseFloat(root[i].fullspace);
   root[i].usedspace = root[i].fullspace - root[i].freespace;
   root[i].usedspace = ((root[i].usedspace/root[i].fullspace)*100).toFixed(2);
   
   root[i].freespace = (root[i].freespace / 1073741824).toFixed(2) + " GB";
   root[i].fullspace = (root[i].fullspace / 1073741824).toFixed(2) + " GB";
   root[i].usedspace = root[i].usedspace + " %";
   
   WSH.Echo(root[i] + " \t" + root[i].freespace + " \t" + root[i].fullspace + " \t" + root[i].usedspace);
}


/**
// olny for debug purposes
for (var x in root) {
    // Lista todas as propriedades
    // WSH.Echo("A propriedade '" + x + "' é " + root[x]);
    for (var y in root[x]) {
      // Lista todas as propriedades
      WSH.Echo("root[" + x + "][" + y + "]: " + root[x][y]);
    }
}
*/

testifthereiswsf.js
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/**
 * WINDOWS SCRIPT JSCRIPT
 *
 * Test if there is a WSF interpreter.
 *   testifthereiswsf.js
 *   version: 1.0
 *
 * CALL ME:
 *   cscript.exe /nologo testifthereiswsf.js
 *
 * USE ME IN A BATCH FILE:
 *   cscript.exe /nologo testifthereiswsf.js > "%userprofile%\scriptsclinicadia\laudos\script-clinica-dia-inputfile.txt"
 *
 */

WSH.Echo("foundandworkingwsf");

Códigos convertidos para html com http://hilite.me/.

Sítios oficiais dos programas utilizados: MergeWTT,  Notepad++7-zip.

TL;DR: Deu errado não deu? Você foi avisado!


abraços

Nenhum comentário:

Postar um comentário