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!
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: Merge, WTT, Notepad++ e 7-zip.
TL;DR: Deu errado não deu? Você foi avisado!
abraços
Nenhum comentário:
Postar um comentário