Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    429

    [VBS script] Script non funzionante senza errori

    Ciao a tutti,
    ho questo script
    codice:
    dim getHashMD5
        
    Set oShell = CreateObject("WScript.Shell")
    Set oShellExec = oShell.Exec("./md5.exe log_dropbox.txt ")
    If oShellExec.Status = 0 Then
    	getHashMD5 = oShellExec.StdOut.ReadAll
    	msgbox "QUI"
    Else
    	getHashMD5 = "Failed with Error " & oShellExec.Status & vbNewLine & oShellExec.StdErr.ReadAll
    	msgbox "NO"
    End If
    Set oShell = Nothing
    Set oShellExec = Nothing
    		
    msgbox "hash:"& getHashMD5
    che mi calcola l'md5 di un file con questo programma https://www.fourmilab.ch/md5/ da linea di comando.
    I miei problemi sono
    1 - eseguendolo vedo la finestra di md5.exe che si apre e si chiude ma non arriva mai all'ultimo msgbox
    2 - il flusso passa nell'if perche' vedo il messagebox QUI ma poi sembra terminare li
    3 - non ricevo nessun errore, ho provato anche a mettere on error resume next e verificare se ce ne sono ma non mi visualizza niente

    questo pezzo di codice in realta' e' dentro una funzione che richiamo in uno script per verificare che un file di backup che scarico abbia lo stesso md5 di quello che e' stato creato su un altra macchina.

    Fino a ieri funzionava, da oggi ho questa anomalia, non ho avuto ne aggiornamenti di windows ne modificato lo script.

    Se provo da linea di comando a dare md5.exe log_dropbox.txt vedo la stringa md5 correttamente, il file vbs e' nella stessa cartella di md5.exe e viene lanciato manualmente facendo doppio click da me.

    Mi trovo su pc con windows 10.

    Avete idee? potreste provare sul vostro pc il mio script e vedere se anche a voi da questo problema?
    grazie in anticipo
    Da un grande potere derivano grandi responsabilità

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ciao, ho provato esattamente tutto quello che hai descritto e a me funziona regolarmente.

    Purtroppo non posso dirti molto altro ...

    Fai qualche prova da finestra DOS e controlla il tuo antivirus/antimalware (magari disabilitalo temporaneamente)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    429
    Ciao Oregon,
    grazie per la prova che hai fatto.

    Ho gia provato a disattivare l'antivirus avast, ma continuo ad avere la stessa anomalia.

    Da finestra DOS cosa intendi? lancio il vbs da DOS?

    Da DOS ho gia provato md5.exe e fa quello che deve
    Da un grande potere derivano grandi responsabilità

  4. #4
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    429
    Sono andato a vedere nel registro eventi di windows/applicazioni e trovo questo

    Errore
    Nome dell'applicazione che ha generato l'errore: WScript.exe, versione: 5.812.10240.16384, timestamp: 0x36047c30
    Nome del modulo che ha generato l'errore: ntdll.dll, versione: 10.0.19041.5438, timestamp: 0xab0dece3
    Codice eccezione: 0xc0000409
    Offset errore 0x000000000008cc4f
    ID processo che ha generato l'errore: 0x1900
    Ora di avvio dell'applicazione che ha generato l'errore: 0x01db9f1cf2f69141
    Percorso dell'applicazione che ha generato l'errore: C:\WINDOWS\System32\WScript.exe
    Percorso del modulo che ha generato l'errore: C:\WINDOWS\SYSTEM32\ntdll.dll
    ID segnalazione: 945fbc9b-1a0c-418e-97ff-90c82217b279
    Nome completo pacchetto che ha generato l'errore:
    ID applicazione relativo al pacchetto che ha generato l'errore:

    e una info
    Bucket errato 2060776338596699637, tipo 5
    Nome evento: BEX64
    Risposta: Non disponibile
    ID CAB: 0


    Firma problema:
    P1: WScript.exe
    P2: 5.812.10240.16384
    P3: 36047c30
    P4: ntdll.dll
    P5: 10.0.19041.5438
    P6: ab0dece3
    P7: 000000000008cc4f
    P8: c0000409
    P9: 000000000000000a
    P10:


    File allegati:
    \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER5 D0D.tmp.dmp
    \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER5 D8B.tmp.WERInternalMetadata.xml
    \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER5 DEA.tmp.xml
    \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER5 DF7.tmp.csv
    \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER5 E17.tmp.txt


    I file potrebbero essere disponibili qui:
    \\?\C:\ProgramData\Microsoft\Windows\WER\ReportArc hive\AppCrash_WScript.exe_5e9bfb65f2eee79a295cc4d3 fce34bedf42e8f_bb1d9952_8f83ff5f-9520-4036-8f8d-00246c7724ef


    Simbolo analisi:
    Nuova ricerca di soluzioni: 0
    ID rapporto: 945fbc9b-1a0c-418e-97ff-90c82217b279
    Stato rapporto: 268435456
    Bucket con hash: f16382dc37bfad6e1c99592957961df5
    GUID CAB: 0


    ma non ho idea di cosa significhi e cosa fare.
    Da un grande potere derivano grandi responsabilità

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La segnalazione BEX64 indica un evento di Buffer Overflow durante l'esecuzione di WScript.exe che è qualcosa che indica una possibile corruzione di file di sistema.

    Non conoscendo lo stato del tuo PC (aggiornamenti e software di terze parti installato, soprattutto relativo a tool/giochi) è impossibile dire di più.

    Potresti fare un controllo con AppCrashView o puoi inviare i file .dmp a Microsoft aprendo un ticket per il supporto tecnico.

    Se prima funzionava tutto è evidente che il problema sta in qualche software/tool installato nel frattempo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    429
    Ho lanciato i comandi DISM e SFC /scannow, il primo mi ha detto che e' tutto regolare, il secondo ha trovato dei file corrotti e li ha sistemati.

    Riavviato il pc.

    Ho commentato nel mio script le due linee

    Set oShell = Nothing
    Set oShellExec = Nothing

    adesso funziona la parte che ho riportato qui sul forum, ma se eseguo quello completo si chiude e non continua ed andando a vedere gli eventi riporta sempre quell'errore BEX64.

    lo script completo e' questo:
    codice:
    'calcolo l'md5 del file che ho scaricato
    Dim hashDownload
    
    
    cartellaDownload = "W:\backup\S\"
    
    
    ultimoFile = GetRecentFile(cartellaDownload, "7z")
    
    
    hashDownload = Trim( left( getHashMD5(ultimoFile), 33))
    
    
    hashMail = removeSpace( InputBox ("Inserire l'hash preso dalla mail") )
    if UCase(hashMail) = hashDownload Then
    	MsgBox "OK hash corrispondenti "& vbCrlf & ultimoFile
    Else
    	MsgBox "hash errati"& vbCrlf & ultimoFile
    end if
    
    
    call verifica7zip( ultimoFile )
    
    
    call Apri(cartellaDownload)
    call Apri(cartellaDownload & "logBackup.txt")
    
    
    Wscript.Quit
    
    
    '*************************************************************************
    '****************************** FINE SCRIPT ******************************
    '*************************************************************************
    
    
    Function getHashMD5(filename)
        
    	Set oShell = CreateObject("WScript.Shell")
        Set oShellExec = oShell.Exec("./md5.exe """ & filename & """ ")
        If oShellExec.Status = 0 Then        
            getHashMD5 = oShellExec.StdOut.ReadAll
    		msgbox "QUI"
        Else        
    		getHashMD5 = "Failed with Error " & oShellExec.Status & vbNewLine & oShellExec.StdErr.ReadAll
    		msgbox "NO"
        End If
    	'Set oShellExec = Nothing
    	'Set oShell = Nothing
    	
    End Function
    
    
    Function GetRecentFile(path, fileExtension)
    	Dim fso, file
    	Set fso = CreateObject("Scripting.FileSystemObject")
    	Set GetRecentFile = Nothing
    	For Each file in fso.GetFolder(path).Files
    		if lcase(File.Name) <> lcase("Thumbs.db") And LCase(fso.GetExtensionName(file.Name)) = LCase(fileExtension) Then
    			If GetRecentFile is Nothing Then
    				Set GetRecentFile = file
    			ElseIf file.DateLastModified > GetRecentFile.DateLastModified Then
    				Set GetRecentFile = file
    			End If
    		end if
    	Next
    	'Set fso = Nothing
    End Function
    
    
    Function removeSpace( stringa )
    	removeSpace = Replace(stringa, " ", "")
    End Function
    
    
    Sub verifica7zip(fileDaVerificare)
    	Set WshShell = CreateObject("Wscript.Shell")
    
    
    	cmd = "7z.exe t "& fileDaVerificare
    	cmd = "%comspec% /c ""7z.exe t "& fileDaVerificare &" & pause"""
    
    
    	'msgbox cmd
    
    
    	WshShell.Run cmd, 1, true
    
    
    	'Set WshShell = Nothing
    End Sub
    
    
    Sub Apri(cartellaDaAprire)
    	Dim SH
    	Set SH = WScript.CreateObject("WScript.Shell")
    	SH.Run cartellaDaAprire
    	'Set SH = Nothing
    End Sub
    Da un grande potere derivano grandi responsabilità

  7. #7
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    429
    -- Aggiornamento --
    Ho gettato la spugna, lo fa su tutti i pc dell'ufficio, quindi escluderei che tutti abbiano dei file corrotti, anche su pc con win11.
    Ho inserito tutte le esclusioni sull'antivirus, anche disabilitandolo e il mio script ha sempre quella anomalia.

    Ho risolto convertendo lo script in powershell, con l'aiuto di copilot
    Da un grande potere derivano grandi responsabilità

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.