Newsgroup: it.comp.os.win.windows10
Titolo: Condizioni StandBy o ShutDown

 
Salve, ho cercato nelle verie opzioni di Windows ma non ho trovato quello che mi
serve.
 
Ultimamente mi capita abbastanza spesso di convertire files codificati in x265,
e questo richiede diverse ore di funzionamento del pc.
 
Il problema è che non riesco a impedire che vada in stand-by se la CPU sta
lavorando e il computer è abbandonato.
 
Adesso è settato in modo che dopo 20 minuti passi in Stand-By, e questo succede
con qualunque attività della CPU, per non avere un'interruzione dopo poco tempo
l'unica è disabilitare lo Stand-By.
 
Inoltre nelle ultime versioni di AviDemux non c'è nemmeno più la possibilità di
spegnere il pc a conversione finita, per cui mi ritrovo al mattino
inevitabilmente col pc acceso.
 
Questo a Greta non piacerebbe  :-)
 
Se esiste una soluzione in Windows sarò ben felice di usarla, ma piuttosto che
usare eseguibili strani mi sono fatto uno script che spegne gli schermi, evita
lo stand-by e quando ha finito il lavoro spegne pure il pc.
 
Visto che funziona e mi ha risolto il problema, ho pensato che potrebbe servire
anche a qualcun altro.
 
Occorre solo avere NirCmd, che si trova qui:
http://www.nirsoft.net/utils/nircmd.html
 
salvarlo e mettere il percorso nella prima riga.
 
Salvare le righe più sotto oppure scaricarlo da qui:
https://www.dropbox.com/s/is23ria3pfrt1bd/Cpu_Working.vbs?dl=0
 
 
Per disattivare lo script una volta partito si può usare il task manager o farlo
partire una seconda volta.
 
 
File:  Cpu_Working.vbs
__________________________________________________
NirCmd = "E:\Apps\Nirsoft\nircmd-x64\nircmd.exe"
 
Const WindowsFolder = 0, SystemFolder = 1, TemporaryFolder = 2
Const ForReading = 1, ForWriting = 2, ForAppending = 8
 
 Set oShell = CreateObject("WScript.Shell")
 Set Fso = CreateObject("Scripting.FileSystemObject") 
 
'Spegne in caso di doppia esecuzione
 KillPrevinstance Wscript.ScriptName
 
 
 ShutDown = Fso.GetSpecialFolder(SystemFolder)& "\shutdown.exe "
 
 CmdHIB = ShutDown & " -h"		'SPEGNE
 CmdSHD = ShutDown & " -s -f -t 00"	'IBERNA
 Cmnd = NirCmd & " monitor off"	''OFF monitor
 
 WScript.Sleep 1000
 oShell.Run Cmnd, 0 'spegni il monitor
 
 PrcLim = 40	'% minima
 SlpT = 5000	'Pausa mSec
 NLP = 4	'x 20 sec.
 
 
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
 LT = NLP	'Loop counter
 
'spegne se legge per 4 volte perc < 40%
  Do
  	WScript.Sleep SlpT
	Set oRes = oWMI.ExecQuery("select PercentProcessorTime from
Win32_PerfFormattedData_PerfOS_Processor where Name = '_Total'")
	For Each oEntry in oRes:	Prc = CInt(oEntry.PercentProcessorTime)
	Next
 
	If Prc > PrcLim Then
		LT = NLP	:'WriteLog  Prc &">"& PrcLim &" = "& LT
	Else
		LT = LT-1	:'WriteLog Prc &" "& LT
	End If
	If LT = 0 Then
	    i = oShell.Popup ("ShutDown?", 30, "CPU <"& PrcLim & "% FOR " & NLP
* SlpT \1000 & " Sec. ", VbQuestion or VboKCancel or VbDefaultButton2)
	    If i = VbCancel Then WScript.Quit
	    oShell.Run  CmdSHD 'spegni
'	    oShell.Run  CmdHIB 'o iberna
		WScript.Quit
	End If
 
	 k = k+1
	If (k Mod 12) = 0 Then 'ogni 60 sec
	  oShell.SendKeys "{NUMLOCK}{NUMLOCK}", True 'avoid Susp
	  oShell.Run Cmnd, 0 'rispegni monitor
	End If
  Loop
 
 WScript.Quit
 
Sub WriteLog (Txt)
FTmp = Fso.GetSpecialFolder(TemporaryFolder) & "\Cp.log "
	Set File_W = FSO.OpenTextFile (FTmp, ForAppending, True)
	File_W.WriteLine Now &" "& Txt
	File_W.Close
End Sub
 
Sub KillPrevinstance(VbS)
 Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
 
' Get instances of .vbs running under wscript.exe or cscript.exe
'Set colItems = objWMIService.ExecQuery ("Select * from Win32_Process Where Name
= 'wscript.exe' Or Name = 'cscript.exe' And CommandLine like '%keepalive.vbs%'")
 Set colItems = objWMIService.ExecQuery ("Select * from Win32_Process Where Name
= 'wscript.exe' Or Name = 'cscript.exe' And CommandLine like '%" & VbS & "%'")
 
  If colItems.count > 1 Then
'  Get all instances of .vbs and terminate them
	Set colItems = objWMIService.ExecQuery ("Select * from Win32_Process
Where CommandLine like '%" & VbS & "%'")
	For Each objItem in colItems
		 objItem.Terminate
	Next
	oShell.Popup VbS , 5,"Script Terminato"
	Wscript.Quit
  End If
 Set objWMIService = Nothing: Set colItems = Nothing
End Sub
 

 e questo succede con qualunque attività della CPU
 
Non puoi discernere quale attivita' CPU se non glielo dici tu.
Per un SW generico anche l'intervento dell'antivirus per una spazzolata 
veloce potrebbe essere attivita' CPU.
O l'arrivo di una email o qualsiasi altra cosa possa succedere.
 
Usare la % di CPU per sapere se il PC e' in idle e' anacronistico, 
specialmente per chi ha piu' di 8 core virtuali.
 
Io per esempio ne ho 16: se sto usando il PC per sfogliare la rete ho una 
attivita' media dell'1%.
 
Il succo del discorso e' che l'impedimento dello standby lo dovrebbe 
prevedere proprio il SW che stai usando.
Capisco che mentre comprimi hai il 90-95% di CPU in uso e lo distinui 
chiaramente da un 40%, ma l'approccio secondo me e' errato.
 
Usa Handbrake che e' 10 volte meglio per quello che devi fare, e prevede sia 
l'interruzione dello standby che lo standby o shutdown a lavoro finito.
 
 
 

l'interruzione dello standby che lo standby o shutdown a lavoro finito.
 
Avevo giŕ scaricato Handbrake molto tempo fa, e mi sembra di ricordare che
avesse problemi con i sottotitoli, che per me sono fondamentali, per cui sono
rimasto con Avidemux.
 
Dal momento che nel frattempo sono uscite moltre altre versioni, mi sono
scaricato l'ultima portable, magari adesso il problema č stato risolto.
 
Grazie comunque per la segnalazione.
 
-- 
ciao
  Stefano

 mi sembra di ricordare che avesse problemi con i sottotitoli
 
Stai scherzando?
:)
 
Magari era ancora la beta... 
 
 



No, e quelle limitazioni sono rimaste.
 
Non č possibile selezionare il font, la dimensione e la posizione per mettere il
sottotitolo in sovrimpressione, come invece si poteva fare con i filtri di
AviDemux.
 
Questo č un problema quando si usano files .srt, non lo č piů quando si usano
files .ssa perchč i vari parametri sono specificati all'interno del file
 
Dal momento che ultimamente uso files .ssa e per quello mi sono scritto un
apposito programma di conversione da .srt credo che adesso HandBrake si possa
usare.
 
 
-- 
ciao
  Stefano

 usare.
 
Subtitle Edit (free) credo faccia sicuramente di meglio.