Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VBSCRIPT] Gestire gli errori

    Salve a tutti, ho scritto un piccolo script in vbscript per gestire la copia di alcuni file da una postazione ad n postazioni nella rete locale.
    Funziona tutto, però l'ho testo con pochi pc e mi sono accorto che quando qualcosa non va (come ad esempio è fallita la copia) mi compare il messaggio di errore e interrompe tutto.
    Nello script creo anche un file di log, e vorrei che i messaggi di errori venissero salvati e che lo script continuasse ad andare avanti con i pc successivi

    Inserisco il codice finora scritto:
    codice:
    Dim OggFile, Output, Input
    Dim ArgObj, LogFile, LstFile
    Dim objNetwork
    
    Const ForAppending = 8 
    Const ForReading = 1 
    Const ForWriting = 2
    
    Set ArgObj = WScript.arguments
    LstFile = ArgObj(0)
    LogFile = Split(LstFile,".")
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("WScript.Network")
    Set Output = fso.OpenTextFile(LogFile(0)+"_Log.txt", ForAppending, True)
    
    'Controllo se il file di Input con la Lista esiste 
    If fso.FileExists(LstFile) Then
    	Set Input = fso.OpenTextFile(LstFile, ForReading, True)
    	
    	'Eseguo un ciclo per ogni riga del file di Input
    	Do Until Input.AtEndOfStream
    		ArrayLine = Input.ReadLine
    		strLine = Split(ArrayLine, ";")
    		
    		'Check 
    		If Ping(strLine(0)) Then
    			Output.WriteLine("--------------------------")
    			Output.WriteLine(strLine(0))
    			Output.WriteLine("Ping status:	OK")
    			
    			strLocalDrive = "K:"
    			strRemoteShare = "\\"+strLine(0)+strLine(1)
    			
    			' Mount remote Drive into the local Drive
    			objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, False, "utente", "password"
    			Output.WriteLine("Mount:		OK")
    			
    			'Rename original file from Original.exe to Original_OLD.exe
    			fso.MoveFile strLocalDrive+"\Original.exe", strLocalDrive+"\Original_OLD.exe"
    			Output.WriteLine("Move: 		OK")
    			
    			'Copy new exec file into network drive
    			fso.CopyFile "New.exe", strLocalDrive+"\Original.exe"
    			Output.WriteLine("Copy: 		OK")
    			
    			'Unmount network drive
    			objNetwork.RemoveNetworkDrive strLocalDrive, True
    			Output.WriteLine("UnMount:	OK")
    			Output.WriteLine()
    		Else
    			Output.WriteLine("--------------------------")
    			Output.WriteLine(strLine(0))
    			Output.WriteLine("Ping status:	NOT OK")
    			Output.WriteLine()
    		End If
    	Loop
    
    	Input.Close
    Else
    	msgbox("Il file " + LstFile + " non esiste")
    End If
    
    Set ArgObj = Nothing
    Output.close
    
    
    
    Function Ping(strComputer)
      Dim wmiQuery, objWMIService, objPing, objStatus
      
      wmiQuery = "Select * From Win32_PingStatus Where Address = '" & strComputer & "'"
      
      Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
      Set objPing = objWMIService.ExecQuery(wmiQuery)
      
      For Each objStatus in objPing
          If IsNull(objStatus.StatusCode) Or objStatus.Statuscode<>0 Then
              Ping = False 'Computer non raggiungibile
          Else
              Ping = True 'Computer raggiungibile
          End If
      Next
     End Function
    Grazie

  2. #2
    Purtroppo non è semplicissimo... http://stackoverflow.com/questions/1...error-handling

    Tra parentesi, VBScript va nella sezione apposita, sposto.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.