I am making a batch code to execute commands and capture result in files, while also keeping the output on screen.
For programs with fast execution and simple output of one line after another I have found a solution.
This solution does not seem to work unfortunately with commands that have a progress bar on the screen. The output of the progress line is spread in the following lines and this is not wanted.
For example this:
@echo off
rem Warning! Run as administrator.
rem go safe place for testing...
cd /D "%temp%"
for %%C in (
"chkdsk /scan"
"dism /online /cleanup-image /scanhealth"
"sfc /scannow"
) do (
rem Partially simulates "echo on" on commands.
echo(%CD%^>%%~C
rem Execute command.
%%~C
)
I would like to keep the original output and keep the time progress on the screen, while on file I would like the final output or in any case the possibility to extract it.
I tried to re-route the output to file but I should re-read and reformat it, maybe there is a better solution.
Is there a way this can be achieved?
I'm open to workarounds involving batch files and PowerShell
i tried to run this command in powershell but the result on screen is not what i want:
PS C:\Users\fposc\AppData\Local\Temp> chkdsk /scan *>&1 | Tee-Object -Variable Tee
Il file system è di tipo NTFS.
L'etichetta del volume è Windows.
Fase 1: analisi della struttura del file system di base in corso...
Avanzamento: 0 di 536592 completati. Fase: 0%, totale: 0%, ETA: 0:25:49
Avanzamento: 1630 di 536592 completati. Fase: 0%, totale: 0%, ETA: 0:25:48 .
Avanzamento: 4549 di 536592 completati. Fase: 0%, totale: 0%, ETA: 0:25:45 ..
Avanzamento: 6765 di 536592 completati. Fase: 1%, totale: 0%, ETA: 0:03:36 ...
Avanzamento: 10756 di 536592 completati. Fase: 2%, totale: 0%, ETA: 0:03:18
Avanzamento: 10803 di 536592 completati. Fase: 2%, totale: 0%, ETA: 0:04:22 .
Avanzamento: 13373 di 536592 completati. Fase: 2%, totale: 0%, ETA: 0:04:30 ..
Avanzamento: 16728 di 536592 completati. Fase: 3%, totale: 1%, ETA: 0:04:12 ...
Avanzamento: 23233 di 536592 completati. Fase: 4%, totale: 1%, ETA: 0:03:39
EDIT I have tried the answer of Cpt.Whale and this work very well. The output on screen is kept as the original command
C:\WINDOWS\system32>echo chkdsk /scan | powershell -c "Start-Transcript tee.txt -Force; Invoke-Expression $input; Stop-Transcript"
Trascrizione avviata. File di output: tee.txt
Il file system è di tipo NTFS.
L'etichetta del volume è Windows.
Fase 1: analisi della struttura del file system di base in corso...
536592 record file elaborati.
Verifica file completata.
Durata fase (Verifica record di file): 58.78 secondi.
39496 record di file di grandi dimensioni elaborati.
Durata fase (Recupero record di file orfani): 0.00 millisecondi.
...
10504959 unità totali di allocazione su disco.
3520856 unità di allocazione disponibili su disco.
Durata totale: 1.87 minuti (112741 ms).
Trascrizione arrestata. File di output: C:\WINDOWS\system32\tee.txt
C:\WINDOWS\system32>
but the file has problem: look at "´╗┐" and "├¿"
C:\WINDOWS\system32>type C:\WINDOWS\system32\tee.txt
´╗┐**********************
Inizio trascrizione Windows PowerShell
Ora di inizio: 20210425161211
Nome utente: PC-ASUS\fposc
Esegui come utente: PC-ASUS\fposc
Nome configurazione:
Computer PC-ASUS (Microsoft Windows NT 10.0.19042.0)
Applicazione host: powershell -c Start-Transcript tee.txt -Force; Invoke-Expression $input; Stop-Transcript
ID processo: 8476
PSVersion: 5.1.19041.906
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.19041.906
BuildVersion: 10.0.19041.906
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Trascrizione avviata. File di output: tee.txt
Il file system è di tipo NTFS.
L'etichetta del volume è Windows.
Fase 1: analisi della struttura del file system di base in corso...
536592 record file elaborati.
Verifica file completata.
Durata fase (Verifica record di file): 58.78 secondi.
39496 record di file di grandi dimensioni elaborati.
Durata fase (Recupero record di file orfani): 0.00 millisecondi.
0 record file non validi elaborati.
Durata fase (Controllo record di file non validi): 0.46 millisecondi.
Fase 2: analisi del collegamento dei nomi file in corso...
72663 record reparse elaborati.
730874 voci di indice elaborate.
Verifica indici completata.
Durata fase (Verifica dell'indice): 47.53 secondi.
0 file non indicizzati analizzati.
Durata fase (Riconnessione orfano): 5.58 secondi.
0 file non indicizzati ripristinati nella cartella dei file persi e ritrovati.
Durata fase (Ripristino orfano nella cartella dei file persi e ritrovati): 6.15 millisecondi.
72663 record reparse elaborati.
Durata fase (Verifica reparse point e ID oggetto): 372.90 millisecondi.
Fase 3: analisi dei descrittori di sicurezza in corso...
Verifica descrittori di sicurezza completata.
Durata fase (Verifica descrittori di sicurezza): 74.18 millisecondi.
97142 file di dati elaborati.
Durata fase (Verifica attributi dati): 0.43 millisecondi.
CHKDSK sta verificando il journal USN...
34812696 byte USN elaborati.
Verifica del journal USN completata.
Durata fase (Verifica journal USN): 352.43 millisecondi.
Analisi del file system effettuata. Nessun problema rilevato.
Non sono necessarie ulteriori azioni.
42019839 KB di spazio totale su disco.
27079516 KB in 285283 file.
189088 KB in 97143 indici.
0 KB in settori danneggiati.
667811 KB in uso dal sistema.
65536 KB occupati dal file registro.
14083424 KB disponibili su disco.
4096 byte in ogni unità di allocazione.
10504959 unità totali di allocazione su disco.
3520856 unità di allocazione disponibili su disco.
Durata totale: 1.87 minuti (112741 ms).
**********************
Fine trascrizione Windows PowerShell
Ora di fine: 20210425161414
**********************
C:\WINDOWS\system32>