Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* Zippare file distinti e mantenerli distinti
Nuovo argomento   Rispondi    Indice del forum -> Software - generale
Precedente :: Successivo  
Autore Messaggio
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 02 Ott 2008 15:50    Oggetto: Rispondi citando

francescodue ha scritto:
Eccomi ancora.

Adesso funziona.

L'errore era mio: nella stringa del compressore avevo scritto c:\programmi\izarc\izarc invece di c:\programmi\izarc
E faccio in tempo a vedere anche il file temporaneo cmd prima che sparisca.

Smile

francescodue ha scritto:
Adesso però ho due domande.
I file che vengono fuori hanno una doppia estensione (pippo.igs.zip): non che mi dia fastidio, anzi torna utile, ma mi chiedevo se potrebbe dare problemi in futuro. Mi spiego: nel caso dovessi ripetere l'operazione lo script prende l'ultima estensione (cioè .zip) e quindi salta il file oppure vede anche la prima (.igs) e ricomprime il file?

L'estensione originale, l'ho appositamente lasciata perché rimanga traccia del nome completo originale Wink
No, se nella cartella c'è un file yyy.igs.zip, dopo la compressione
[con /I=XXX e /O=XXX e /R=0] ti troveresti due files:
yyy.igs.zip e yyy.igs.zip.zip
tre, se la prima compressione aveva gli stessi parametri [yyy.igs yyy.igs.zip yyy.igs.zip.zip]
inoltre: se il filtro è *.igs nella seconda compressione lui tratterà solo i files con quella estensione ignorando quelli con estensione .zip, ma... se per caso fosse presente un nome uguale [non ho mai provato] non so se IZARCC aggiunge o sovrappone [all'esecuzione di IZARCC io non associo il parametro -a quindi non ho ancora sperimentato cosa succeda]

francescodue ha scritto:
Seconda domanda: quando lancio lo script non ho indicazioni da nessuna parte di quando termina il lavoro. Sono troppo esigente oppure mi è sfuggito qualcosa?.

Per sicurezza farò qualche altro test e poi attaccherò l'archivio.


No, non sei troppo esigente, anzi, le tue domande mi hanno spinto a rivedere lo script trovando alcune imprecisioni, a presto posterò la nuova versione [che comprenderà anche l'avviso di fine lavoro] con le correzioni del caso, niente di importante ma è meglio essere precisi Wink

francescodue ha scritto:

In ogni caso:
GRAZIE MILLE GrayWolf.
E grazie a tutti quelli che mi hanno dato assistenza.

de nada hombre Smile

ah, ultima cosa:
se lanci lo script da operazioni pianificate il messaggio di fine lavoro rimarrebbe in attesa di risposta [come succederebbe se i flags /A e /L fossero = 1 per il lavoro lanciato a esempio di notte]... vabbè istituirò un flag anche per quello Smile
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 02 Ott 2008 19:00    Oggetto: Rispondi citando

francescodue ha scritto:
Rieccomi.
Lo script continua a funzionare.
Ho notato che se non ci sono file .igs (nel mio caso) nella cartella mi compare una finestra di errore. È utile.
E ho provato anche a rilanciare il vbs nella stessa cartella e vede solo i file nuovi, questo solo per scrupolo.
Altra cosa: mi permette di modificare la lista LstComp.txt ma poi processa solo quelli della lista originale che ha trovato, che infatti compare nel file Elenco.txt senza le modifiche. Poco male.
Altra cosa interessante è che vedo le finestre di prompt aprirsi e chiudersi in sequenza mentre processa i file. Per quelli piccoli è una cosa rapidissima mentre per quelli più pesanti resta aperta per più tempo. Se non altro finché è aperta so che sta lavorando.
Ancora grazie.


Grazie a te di essere stato il mio beta-tester Wink.

Nel prossimo post inserisco la nuova versione dello script e del manualetto con l'indicazione delle modifiche apportate.
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 02 Ott 2008 19:51    Oggetto: Rispondi citando

Ecco la nuova versione dello script.

Modifiche apportate:
Citazione:

  1. Aggiunto il flag /E per il messaggio di fine lavoro
  2. Impostato lo script per funzionare in modalità neutra
    leggere la parte !!!!!!!!!!!!! IMPORTANTE !!!!!!!!!!!!!! [nella "PERSONALIZZAZIONE"]
  3. Istituito il log di compressione
  4. sistemato il refuso: esposto LstComp. txt ma poi rilevato Elenco.txt
  5. ampliato il trattamento del filtro [eliminati spazi di testa e coda e doppie virgolette]
  6. messaggio e chiusura del lavoro se non trovato nessun file con l'estensione indicata nel filtro
  7. aggiornato il manualetto


Codice:

' VB Script Document
option explicit

'* *****************************************************************************
'* Scopo dello script:                                                         *
'*                      **************************************                 *
'*                      * Comprimere i files di una cartella *                 *
'*                      * incluse o escluse le sottocartelle *                 *
'*                      **************************************                 *
'*                                                                             *
'* Note:                                                                       *
'*                                                                             *
'* 1^ Lo script presuppone l'uso di IZARCC.EXE [commandline]                   *
'*    programma gratuito per la compressione da linea comando                  *
'*    scaricabile dal sito: http://www.izarc.org                               *
'*    l'eseguibile con la GUI  [anch'esso scaricabile]                         *
'*    può costituire una valida alternativa  ad altri compressori              *
'*                                                                             *
'* 2^ La realizzazione di questo script è stata possibile anche grazie         *
'*    agli esempi reperiti sul sito: http://www.jsware.net                     *
'*                                                                             *
'* *****************************************************************************

'* =============================================================================
'*                           PERSONALIZZAZIONE
'*                           -----------------

'* ------------------------------------------------------------
'*              cartella di ORIGINE dei files da comprimere
'* ------------------------------------------------------------
'*
'* indicare il percorso ove risiedono i falies da comprimere
'*
'* esempio: sPercorsoOrigine = "C:\miei Files\Da Comprimere"
  sPercorsoOrigine = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*             cartella di DESTINAZIONE dei files compressi
'* ------------------------------------------------------------
'*
'* indicare il percorso di deposito dei files compressi
'*
'* esempio: sPercorsoDestinazione = "C:\miei_Files\Compressi"
  sPercorsoDestinazione = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*                       percorso del COMPRESSORE
'* ------------------------------------------------------------
'*
'* indicare il percorso nel quale è stato installato IZARCC
'*
'* esempio: sPercorsoCompressore = "C:\Programmi\IZarc\CommandLine"
  sPercorsoCompressore = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*                       FILTRO
'* ------------------------------------------------------------
'*
'* indicare il filtro da utilizzare  per includere SOLO i files
'* con la stessa estensione
'*
'* esempi : sFiltro = "*.doc" saranno presi  in  considerazione
'*                            solo i files di word
'*          sFiltro = "*.jpg" saranno presi  in  considerazione
'*                            solo i files di immagini



'*          sFiltro = "*.*" saranno presi  in  considerazione
'*                            tutti i files

  sFiltro = ""
'* ------------------------------------------------------------

'*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'*!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANTE !!!!!!!!!!!!!!!!!!!!!!!!!
'*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'*
'* lo script, nella sua forma originale, imposta i valori  sot-
'* tostanti con le doppie virgolette come se dovesse essere ri-
'* chiamato in modalità neutra.
'* Qualora si volessero preimpostare i valori  [modalità mista]
'* le parole true o false devono essere  scritte  SENZA  essere
'* racchiuse tra doppie virgolette [come negli esempi riportati]
'*
'*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


'* ------------------------------------------------------------
'*                  INCLUSIONE delle sottocartelle
'* ------------------------------------------------------------
'*
'* indicare se nella compressione devono essere trattate
'* anche le sottocartelle della cartella comunicata come parametro
'*
'* esempio:
'*  bIncludiSottocartelle = false '-->le sottocartelle NON saranno considerate
'*  bIncludiSottocartelle = true  '-->le sottocartelle SARANNO considerate

  bIncludiSottocartelle = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*                     TRATTAMENTO ORIGINE
'* ------------------------------------------------------------
'*
'* indicare il tipo di trattamento dei files originali
'*
'* esempio:
'* bMoveFile = false '--> i files originali NON saranno cancellati
'* bMoveFile = true  '--> i files originali SARANNO cancellati

  bMoveFile = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*                    ESPOSIZIONE MESSAGGIO
'*                per la CONFERMA dei parametri
'*                e per l'AUTORIZZAZIONE all'esecuzione
'* ------------------------------------------------------------
'*
'* indicare se lo script si deve fermare esponendo il messaggio
'* con l'elenco dei parametri e  chiedendo  l'autorizzazione  a
'* procedere con il lavoro
'*
'* esempio:
'* bChiediConfermaParametri = false '--> l'esecuzione si avvierà immediatamente
'* bChiediConfermaParametri = true  '--> dopo la rilevazione dei parametri,  lo
'*                                       script ne esporrà i valori e chiederà
'*                                       l'autorizzazione all'esecuzione

  bChiediConfermaParametri = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*        ESPOSIZIONE LISTA dei files che SARANNO COMPRESSI
'* ------------------------------------------------------------
'*
'* indicare se lo script si deve fermare, richiamando  notepad,
'* per fornire la possibilità di  eliminare  alcuni  dei  files
'* trovati ricercando nella cartella principale ed eventualmen-
'* te nelle sottocartelle.
'*
'* esempio:
'* bExpoLista = false '--> l'esecuzione avverrà SENZA il richiamo di notepad
'* bExpoLista = true  '--> l'esecuzione avverrà CON   il richiamo di notepad

  bExpoLista = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*   RAGGRUPPO di tutti i files NELLA CARTELLA di DESTINAZIONE
'* ------------------------------------------------------------
'*
'* indicare se lo script deve depositare i files compressi nel-
'* la cartella di destinazione oppure se deve  lasciarli  nella
'* cartelle di origine.
'*
'* esempio:
'* bRaggruppo = false '--> i files  compressi  saranno lasciati
'*                         NELLA CARTELLA DI ORIGINE
'* bRaggruppo = true  '--> i files compressi saranno TRASFERITI
'*                         NELLA CARTELLA DI DESTINAZIONE
'*
'* ATTENZIONE: questo flag impostato a true
'*             con bMoveFile=false [o con il parametro /M=0]
'*             fa si che lo script
'*             NON CONSIDERI LA CARTELLA DI DESTINAZIONE

  bRaggruppo = ""
'* ------------------------------------------------------------

'* ------------------------------------------------------------
'*             ESPOSIZIONE MESSAGGIO di fine lavoro
'* ------------------------------------------------------------
'*
'* indicare se lo script deve esporre il  messaggio  quando  ha
'* terminato il suo lavoro
'*
'* esempio:
'* bMessFineLavoro = false '--> l'esecuzione termina SENZA messaggio
'* bMessFineLavoro = true  '--> l'esecuzione termina con un messaggio
'*                              che attende la risposta

  bMessFineLavoro = ""
'* ------------------------------------------------------------
'* =============================================================================



'* =========================================================
'*               DICHIARAZIONE delle VARIABILI
'* =========================================================
  dim objArgs
  dim oFSO
  dim oShell
  dim oFolder
  dim oSubFolders
  dim oSubFolder
  dim oFiles
  dim oFile

  dim sList
  dim sTmp
  dim sScriptName
  dim sScriptPath
  dim avList
  dim avArgs
  dim avTmp

  dim i
  dim a
  dim Return

  dim sInput
  dim sMsg
  dim lIco
  dim sTit

'* ------------------------------------
  dim sPercorsoOrigine
  dim sPercorsoCompressore
  dim sPercorsoDestinazione
  dim sFiltro
  dim bIncludiSottocartelle
  dim bMoveFile
  dim bChiediConfermaParametri
  dim bExpoLista
  dim bRaggruppo
  dim bMessFineLavoro
'* ------------------------------------
'* =========================================================
'*          fine DICHIARAZIONE delle VARIABILI
'* =========================================================


'* =========================================================
'*                   MAIN LINE
'* =========================================================

  impoOggetti

  rilevaParametri

  impoParametri

  ctrlPersonalizzazione

  sList = ListaContenuti(sPercorsoOrigine)

  expoLista

  execCompressione
 
  if bMessFineLavoro then
    sMsg = "Il lavoro è terminato"
    lIco = vbInformation
    sTit = "AVVISO"
    msgbox sMsg,lIco,sTit
  end if

  WScript.quit

'* =========================================================
'*               fine MAIN LINE
'* =========================================================


'* =========================================================
'*            SOTTOPROCEDURE E FUNZIONI
'* =========================================================

'* =========================================================
  sub impoOggetti

    Set objArgs = Wscript.Arguments
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oShell = WScript.CreateObject("WScript.Shell")

    sScriptName = WScript.ScriptName
    sScriptPath = left(WScript.ScriptFullName, _
                       instr(WScript.ScriptFullName,sScriptName)-1 _
                      )
  end sub
'* =========================================================
  sub rilevaParametri

    if objargs.count > 0 then
      for a = 0 to objargs.count -1
        if a = 0 then
          sTmp = objargs(a)
        else
          sTmp = sTmp & "|" & objargs(a)
        end if
      next
    end if

    avArgs = split(sTmp,"|")

  end sub
'* =========================================================
  sub impoParametri

    for a = 0 to ubound(avArgs)
      avTmp = split(avArgs(a),"=")
      select case ucase(avTmp(0))
        case "/I"                                'input
          sPercorsoOrigine = trim(avTmp(1))

        case "/O"                                'output
          SPercorsoDestinazione = trim(avTmp(1))

        case "/C"                                'IZARCC
          SPercorsoCompressore = trim(avTmp(1))

        case "/F"                                'filtro
          SFiltro = trim(avTmp(1))

        case "/S"                                'sottocartelle
          bIncludiSottocartelle = cbool(avTmp(1) * -1)

        case "/M"                                'muove files
          bMoveFile = cbool(avTmp(1) * -1)

        case "/A"                                'autorizzazione
          bChiediConfermaParametri = cbool(avTmp(1) * -1)

        case "/L"                                'Lista files
          bExpoLista = cbool(avTmp(1) * -1)

        case "/R"                                'raggruppo in una cartella
          bRaggruppo = cbool(avTmp(1) * -1)

        case "/E"                                'messaggio di fine lavoro
          bMessFineLavoro  = cbool(avTmp(1) * -1)
     end select
    next

  end sub
'* =========================================================
  sub ctrlPersonalizzazione()

    if len(trim(sPercorsoOrigine)) = 0 then
      sMsg = "PERCORSO della CARTELLA" _
           & string(2,vblf) _
           & " che CONTIENE I FILES DA COMPRIMERE"
      sPercorsoOrigine = Richiesta(sMsg)
    end if
    if not right(sPercorsoOrigine,1) = "\" then
      sPercorsoOrigine = sPercorsoOrigine & "\"
    end if
    sPercorsoOrigine = replace(sPercorsoOrigine,"""","")

    if len(trim(sPercorsoDestinazione)) = 0 then
      sMsg = "PERCORSO della CARTELLA" _
           & string(2,vblf) _
           & "che CONTERRÀ I FILES COMPRESSI"
      sPercorsoDestinazione = Richiesta(sMsg)
    end if
    if not right(sPercorsoDestinazione,1) = "\" then
      sPercorsoDestinazione = sPercorsoDestinazione & "\"
    end if
    sPercorsoDestinazione = replace(sPercorsoDestinazione,"""","")

    if len(trim(sPercorsoCompressore)) = 0 then
      sMsg = "PERCORSO della CARTELLA " _
           & string(2,vblf) _
           & "che contiene IZARCC.EXE"
      sPercorsoCompressore = Richiesta(sMsg)
    end if
    if not right(sPercorsoCompressore,1) = "\" then
      sPercorsoCompressore = sPercorsoCompressore & "\"
    end if
    sPercorsoCompressore = replace(sPercorsoCompressore,"""","")

    if len(trim(sFiltro)) = 0 then
      sMsg = "FILTRO per la SELEZIONE dei FILES" _
           & string(3,vblf) _
           & "*.* = tutti i files"
      sFiltro = Richiesta(sMsg)
    end if
    sFiltro=trim(sFiltro)
    sFiltro=replace(sFiltro,"""","")

    if not bIncludiSottocartelle = false _
   and not bIncludiSottocartelle = true then
      sMsg = "Immettere cosa fare per" _
           & string(2,vblf) _
           & "L'INCLUSIONE DELLE SOTTO CARTELLE" _
           & string(3,vblf) _
           & "0 = Le sottocartelle saranno ignorate" _
           & string(2,vblf) _
           & "1 = Le sottocartelle saranno incluse" _
           & vblf
      do
        bIncludiSottocartelle = Richiesta(sMsg)
      loop until bIncludiSottocartelle = "0" or bIncludiSottocartelle = "1"
      bIncludiSottocartelle = cbool(bIncludiSottocartelle * -1)
    end if

    if not bMoveFile = false _
   and not bMoveFile = true then
      sMsg = "Immettere come" _
           & string(2,vblf) _
           & "TRATTARE IL FILE ORIGINE" _
           & string(3,vblf) _
           & "0 = Il file originale rimane" _
           & string(2,vblf) _
           & "1 = Il file originale sarà cancellato" _
           & vblf
      do
        bMoveFile = Richiesta(sMsg)
      loop until bMoveFile = "0" or bMoveFile = "1"
      bMoveFile = cbool(bMoveFile * -1)
    end if

    if not bChiediConfermaParametri = false _
   and not bChiediConfermaParametri = true then
      sMsg = "Immettere se lo script deve" _
           & string(2,vblf) _
           & "ESPORRE I PARAMETRI " _
           & string(2,vblf) _
           & "ed essere AUTORIZZATO A PROSEGUIRE" _
           & string(3,vblf) _
           & "0 = lo script si esegue senza fermarsi" _
           & string(2,vblf) _
           & "1 = sarà esposto un messaggio per conferma" _
           & vblf
      do
        bChiediConfermaParametri = Richiesta(sMsg)
      loop until bChiediConfermaParametri = "0" or bChiediConfermaParametri = "1"
      bChiediConfermaParametri = cbool(bChiediConfermaParametri * -1)
    end if

    if not bExpoLista = false _
   and not bExpoLista = true then
      sMsg = "Immettere se lo script deve" _
           & string(2,vblf) _
           & "ESPORRE LA LISTA   " _
           & vblf _
           & "dei files che saranno compressi" _
           & string(2,vblf) _
           & "e al rientro," _
           & vblf _
           & "essere AUTORIZZATO A PROSEGUIRE" _
           & string(3,vblf) _
           & "0 = lo script si esegue senza fermarsi" _
           & string(2,vblf) _
           & "1 = saranno esposti lista" _
           & vblf _
           & "      e messaggio per conferma" _
           & vblf
      do
        bExpoLista = Richiesta(sMsg)
      loop until bExpoLista = "0" or bExpoLista = "1"
      bExpoLista = cbool(bExpolista * -1)
    end if

    if not bRaggruppo = false _
   and not bRaggruppo = true then
      sMsg = "Immettere come lo script deve" _
           & string(2,vblf) _
           & "TRATTARE i files COMPRESSI" _
           & string(3,vblf) _
           & "0 = i files RIMANGONO nell'origine" _
           & string(2,vblf) _
           & "1 = i files sono TRASFERITI " _
           & vblf _
           & "      nella destinazione" _
           & vblf
      do
        bRaggruppo = Richiesta(sMsg)
      loop until bRaggruppo = "0" or bRaggruppo = "1"
      bRaggruppo = cbool(bRaggruppo * -1)
    end if

    if not bMessFineLavoro = false _
   and not bMessFineLavoro = true then
      sMsg = "Immettere come lo script deve" _
           & string(2,vblf) _
           & "emettere il MESSAGGIO di FINE LAVORO" _
           & string(3,vblf) _
           & "0 = il lavoro termina SENZA messaggio" _
           & string(2,vblf) _
           & "1 = i il lavoro termina CON messaggio " _
           & vblf
      do
        bMessFineLavoro = Richiesta(sMsg)
      loop until bMessFineLavoro = "0" or bMessFineLavoro = "1"
      bMessFineLavoro = cbool(bMessFineLavoro * -1)
    end if

  '* richiesta conferma
    if bChiediConfermaParametri then
      sMsg = "PARAMETRI di ESECUZIONE" _
           & string(3,vblf) _
           & "Input : " & sPercorsoOrigine _
           & string(2,vblf) _
           & "Output : " & sPercorsoDestinazione _
           & string(2,vblf) _
           & "Files che corrispondono a : " & sFiltro _
           & string(2,vblf) _
           & "Compressore : " & sPercorsoCompressore _
           & string(2,vblf) _
           & "Inclusione sottocartelle : " & bIncludiSottoCartelle _
           & string(2,vblf) _
           & "Cancella file origine dopo la compressione : " & bMoveFile _
           & string(2,vblf) _
           & "Esposizione lista files da comprimere : " & bExpoLista _
           & string(2,vblf) _
           & "Files compressi trasferiti in destinazione : " & bRaggruppo _
           & string(2,vblf) _
           & "Messaggio di fine lavoro : " & bMessFineLavoro _
            & string(3,vblf) _
          & "CONFERMA ESECUZIONE ?" _
           & string(3,vblf) _
           & "rispondendo 'No' lo script termina" _
           & vblf
      lIco = vbQuestion + vbYesNo
      sTit = "Richiesta AUTORIZZAZIONE"
      select case msgbox(sMsg,lIco,sTit)
        case vbNo
          WScript.quit
        case vbYes
         '* tutto OK
      end select
    end if

  end sub
'* =========================================================
  function ListaContenuti(sFolderspec)

    dim sLista
    dim sTmp
    dim sCmd
    dim sCmdName
    dim bErr
   
    sCmdName = "_" _
             & creaNome(2) _
             & ".cmd"

   '* crea comando temporaneo
    sCmd = "@echo off" _
         & vbnewline
    sCmd = sCmd _
         & "dir " _
         & """" _
         & sFolderspec _
         & sFiltro _
         & """"
    sCmd = sCmd _
         & " /ad /aa /4 /ON /b /l"

    if bIncludiSottoCartelle then
     '* richiede l'esplorazione delle sottocartelle
      sCmd = sCmd _
           & " /s "
    end if

    sCmd = sCmd _
         & ">" _
         & """" _
         & sScriptPath _
         & "Elenco.txt" _
         & """"

   '* scrive comando temporaneo
    replaceFile sScriptPath & sCmdName, sCmd

   '* esegue
    sTmp = """" _
         & sScriptPath _
         & sCmdName _
         & """"
    Return = oShell.Run(sTmp , 2, true)

   '* rileva
    if oFSO.getFile(ScriptPath & "Elenco.txt").size = 0 then
     '* non è stato ntrovato nessun file
     '* con il filtro specificato
      sMsg = "Con filtro =" _
           & sFiltro _
           & string(2,vblf) _
           & "NESSUN FILE TROVATO" _
           & string(2,vblf) _
           & "Lo script Termina"
      lIco = vbCritical
      sTit = "ERRORE"
      msgbox sMsg,lIco,sTit
      bErr = true
    else
     '* legge il file prodotto
      sLista = readFile(sScriptPath & "Elenco.txt")
    end if
    sTmp = replace(sTmp,"""","")
    oFSO.DeleteFile sTmp, true

    if bErr then
      WScript.quit
    end if

   '* restituisce
    ListaContenuti = sLista

  end function
'* =========================================================
  sub expoLista

    Set oFile = oFSO.CreateTextFile(sScriptPath & "LstComp.txt", True)
    oFile.Write sList
    oFile.Close
    Set oFile = Nothing

    if bExpoLista then
     '* richiama e attende
      Return = oShell.Run("notepad " & sScriptPath & "LstComp.txt", 1, true)
      sMsg = "Posso CONTINUARE?" _
           & string(3,vblf) _
           & "rispondendo 'No' lo script termina" _
           & string(2,vblf) _
           & "Conferma"
      lIco = vbQuestion + vbYesNo
      sTit = "Richesta CONFERMA"
      select case msgbox(sMsg,lIco,sTit)
        case vbNo
          Wscript.quit
        case vbYes
      end select
    end if

  end sub
'* =========================================================
  sub execCompressione

    dim sCmdC
    dim sCmd
    dim sCont
    dim sPathFile
    dim sFile
    dim sPathTmp
    dim sCmdName
    dim sLog

    dim avCont

    dim f

    sCmdName = "_" _
             & creaNome(2) _
             & ".cmd"

    sCmdC = """" _
          & sPercorsoCompressore _
          & "IZARCC.exe" _
          & """" _
          & " "

    if bMoveFile then
     '* l'origine sarà cancellato
      sCmdC = sCmdC _
           & "-m "
    end if

   '* rileva lista
    sCont = readFile(sScriptPath & "LstComp.txt")
    avCont = split(sCont,vbnewline)

   '* ciclo di esecuzione compressione
    for f = 0 to ubound(avCont)
      if len(trim(avCont(f))) > 0 then
       '* enuclea il nome file
        sFile = right(avCont(f), _
                     len(avCont(f)) _
                         -(instrrev(avCont(f),"\") _
                          ) _
                    )

        if bRaggruppo = false then
         '* lo zip nella stessa cartella dell'origine
          sPathFile = replace(avCont(f),sPercorsoDestinazione,"")
          sPathTmp = replace(avCont(f),sPathFile,"")
        end if

        if bRaggruppo = true then
         '* lo zip nella cartella di destinazione
          sPathFile = sFile
          sPathTmp = sPercorsoDestinazione
        end if

        sCmd = "@echo off" _
             & vbnewline _
             & sCmdC _
             & """" _
             & sPathTmp _
             & sPathFile _
             & ".zip" _
             & """" _
             & " " _
             & """" _
             & avCont(f) _
             & """"

       '* scrive comando temporaneo
        replaceFile sScriptPath & sCmdName, sCmd

       '* esegue
        sTmp = """" _
             & sScriptPath _
             & sCmdName _
             & """"
        Return = oShell.Run(sTmp, 2, true)
        sTmp = replace(sTmp,"""","")
        oFSO.DeleteFile sTmp, true

       '* log di compressione
        sLog = sLog _
             & FormatDateTime(now,0) _
             & " - " _
             & avCont(f) _
             & " ---> " _
             & sPathTmp _
             & sPathFile _
             & ".zip" _
             & vbnewline
             
      end if
    next
    if len(trim(sLog)) > 0 then
      Set oFile = oFSO.CreateTextFile(sScriptPath & _
                                      sScriptName & _
                                      "_Log.txt"_
                                      , True _
                                     )
      oFile.Write sLog
      oFile.Close
      Set oFile = Nothing
    end if

  end sub
'* =========================================================
  function Richiesta(sText)

    sInput = ""

    do
      sInput = inputbox(sText,"RICHIESTA",sInput)
      if len(trim(sInput)) = 0 then
        select case msgbox("premuto annulla o risposta vuota " _
                            & vblf _
                            & "chiudere il programma?" _
                           ,vbquestion+vbYesNo _
                           , "RICHIESTA" _
                          )
          case vbYes
            WScript.quit
          case vbNo
           '* ripete la richiesta
        end select
      end if
    loop until len(trim(sInput)) > 0

    Richiesta = sInput

  end function
'* =========================================================
  function readFile(sFilePath)

    if oFSO.FileExists(sFilePath) = false then
      ReadFile = ""
      exit function
    end If

    set oFile = oFSO.OpenTextFile(sFilePath, 1)
    ReadFile = oFile.ReadAll

    set oFile = Nothing

  end Function
'* =========================================================
  sub replaceFile(sFilePath, sText)

    dim Atr

   '* controlla il percorso
    if oFSO.GetParentFolderName(sFilePath) = "" then
      exit sub
    end if

   '* impo attributi a 0 e cancella:
    if oFSO.FileExists(sFilePath) then
      set oFile = oFSO.GetFile(sFilePath)
      Atr = oFile.Attributes
      oFile.Attributes = 0
      set oFile = nothing
      oFSO.DeleteFile sFilePath, true
    end if

    set oFile = oFSO.CreateTextFile(sFilePath, true)
    oFile.Write sText
    oFile.Close
    set oFile = nothing

    set oFile = oFSO.GetFile(sFilePath)
    oFile.Attributes = Atr
    set oFile = nothing

  end sub
'* =========================================================
  function creaNome(iCifreA)
    dim A
    dim M
    dim G
    dim H
    dim P
    dim S

    A = year(now)
    if iCifreA = 2 then
      A = right(year(now),2)
    end if
    M = Left("00",(2-len(month(now)))) & month(now)
    G = Left("00",(2-len(day(now)))) & day(now)
    H = Left("00",(2-len(hour(now)))) & hour(now)
    P = Left("00",(2-len(minute(now)))) & minute(now)
    S = Left("00",(2-len(second(now)))) & second(now)

    creaNome = A & M & G & H & P & S

  end function
'* =========================================================
'*        fine SOTTOPROCEDURE E FUNZIONI
'* =========================================================


Manualetto
Citazione:

Cos'è
Uno script in linguaggio VBScript
eseguibile su sistemi Windows da NT in poi.
Serve ad automatizzare le operazioni di compressione di files.


Cosa fa
Accetta parametri di personalizzazione per trattamenti diversificati.
Per ogni parametro non valorizzato ne effettua la richiesta.
Espone la lista dei files rilevati e ne permette la modifica
S'interfaccia con IZARCC.exe per effettuare la compressione.
Comprime i files singolarmente.
Produce un log del lavoro eseguito.


Cosa [ancora] non fa
NON comprime i files in un unico zip
Negli zip prodotti, NON sono memorizzati i percorsi né assoluto né relativo
NON riproduce la struttura delle sottocartelle di origine nella cartella di destinazione [quando diversa dall'origine]


Come si personalizza [e possibili usi]
La personalizzazione può avvenire in quattro modi:
1° Predefinita
2° Parametrizzata
3° Mista
4° Neutra

Scenari possibili:

Comprimere e cancellare i files accumulatisi nella cartella_A,
[ed eventuali sottocartelle] trasferendoli nella cartella_B,
dalla quale poi saranno trasferiti in altra locazione.

Comprimere e cancellare i files accumulatisi nella cartella_A,
[ed eventuali sottocartelle], in modo che in tutta la struttura
delle cartelle rimangano solo i files compressi.

Salvare i files accumulatisi nella cartella_A [ed eventuali sottocartelle]
in modo che nella stessa cartella [e sottocartelle] siano presenti
originali e compressi.


Modalità Predefinita
Con il blocco note, modificare lo script nella parte che reca
l'intestazione "PERSONALIZZAZIONE", seguendo le indicazioni e
gli esempi per ciascuna variabile da impostare.

In questa modalità lo script può essere usato per la ripetizione
periodica dello stesso lavoro, cioè se non cambiano le cartelle
di origine e di destinazione nè alcun parametro di funzionamento.

Nota:
nulla vieta di produrre una copia dello script [con nome diverso]
in modalità predefinita, per ogni lavoro che deve essere eseguito.

Modalità Parametrizzata
Con il blocco note, impostare a "" [due doppie virgolette consecutive]
TUTTI i valori descritti nella parte che reca l'intestazione "PERSONALIZZAZIONE".
Associare i parametri di funzionamento al richiamo dello script.

Parametri:
/I=cartella_di_origine [carattere]
/O=cartella di destinazione [carattere]
/C=cartella di installazione di IZARCC.exe [carattere]
/F=filtro per tipo di file [carattere]
/S=inclusione sottocartelle [numero 0 o 1]
/M=cancellazione origine dopo la compressione [numero 0 o 1]
/A=emissione lista parametri prima di proseguire [numero 0 o 1]
/L=esposizione lista files prima di proseguire [numero 0 o 1]
/R=spostamento compressi nella destinazione [numero 0 o 1]
/E=emissione messaggio a lavoro terminato [numero 0 o 1]

I valori dei parametri che si riferiscono a cartelle,
devono essere racchiusi tra doppie virgolette
se i nomi contengono spazi

In questa modalità si ha una sola copia dello script, quello che
cambia saranno i parametri associati al richiamo dello script.

Nota:
I parametri possono essere espressi in qualsiasi ordine

esempio di richiamo:
"XXX.vbs" /I="f:\Mia Cartella\" /O="f:\mia Cartella\" /C=c:\Programmi\IZArc\CommandLine /F= *.* /S=1 /R=0 /L=1 /M=1 /A=1 /E=1
Comprime tutti i files presenti in f:\Mia Cartella e nelle sue sottocartelle
Cancella gli originali
Chiede conferma dei parametri
espone la lista dei files che saranno compressi
NON sposta i files compressi nella cartella di destinazione
Espone il messaggio di fine lavoro

Modalità Mista
Con il blocco note, impostare i valori che non cambieranno mai
e utilizzare i rimanenti parametri [variabili di lavoro in lavoro]
legati al richiamo dello script.

Modalità Neutra
Con il blocco note, impostare a "" [due doppie virgolette consecutive]
TUTTI i valori descritti nella nella parte che reca l'intestazione "PERSONALIZZAZIONE".
Richiamare lo script SENZA ALCUN PARAMETRO associato al suo richiamo
e rispondere alle richieste per l'impostazione.


Come si richiama
attraverso un collegamento sul desktop o nel menu start
[se il lavoro deve essere eseguito tutte le volte che necessita]

oppure

con il richiamo del collegamento nelle operazioni pianificate
[se il lavoro deve essere svolto periodicamente]

Note di particolare interesse:

  1. I parametri associati al richiamo si "sovrappongono" a quelli predefiniti, ma SOLO per la sessione di richiamo.
  2. Se nella destinazione il file compresso esiste già con lo stesso nome, il compressore NON effettua la compressione dell'origine attuale
  3. Alla fine del lavoro nella cartella dello script saranno presenti tre files:

    1. Elenco.txt : elenco dei i files rilevati
    2. LstComp.txt : lista prodotta con il notepad, modificabile secondo le esigenze con aggiunta o cancellazione di righe
      [se modificata sarà diversa da Elenco.txt]
    3. nomescript_Log.txt : elenco dei file compressi con data e ora di compressione




Per tutto il resto... valgono le considerazioni nei post precedenti e...
ancora grazie a francescodue per il beta-test Smile


L'ultima modifica di GrayWolf il 03 Ott 2008 18:13, modificato 1 volta
Top
Profilo Invia messaggio privato
francescodue
Dio minore
Dio minore


Registrato: 26/09/08 11:00
Messaggi: 567

MessaggioInviato: 03 Ott 2008 16:07    Oggetto: Rispondi citando

Eccomi di nuovo.
Ho prelevato il nuovo script, però mi rimanda questo messaggio di errore:
Riga: 588
Carattere: 12
Errore: prevista istruzione
Codice: 800A0400
Origine: errore di compilazione di Microsoft VBScript.
A questo punto chiudo la finestra del messaggio e non succede niente.
Devo aggiornare qualcosa del Windows?
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 03 Ott 2008 18:09    Oggetto: Rispondi citando

francescodue ha scritto:

...
Devo aggiornare qualcosa del Windows?


No, assolutamente no.

Grrr Grrr Grrr
#ç@°*!+[#@]^!!! [parolacce]
Grrr Grrr Grrr

è colpa del copia incolla nel post...
[e mia che non ho controllato riga per riga] Grrr

apri, con notepad, il nuovo script
cerca questo
Codice:
   
     '* non è stato ntrovato nessun file
     '* con il filtro specificato
      sMsg = "Con filtro =" _
           & sFiltro _

           & string(2,vblf) _
           & "NESSUN FILE TROVATO" _
           & string(2,vblf) _
           & "Lo script Termina"



e togli quella maledetta riga bianca

in modo che risulti:

Codice:
     '* non è stato trovato nessun file
     '* con il filtro specificato
      sMsg = "Con filtro =" _
           & sFiltro _
           & string(2,vblf) _
           & "NESSUN FILE TROVATO" _
           & string(2,vblf) _
           & "Lo script Termina"


dopo di che l'errore non si presenta più
[ho copia/incollato dal post, ho eseguito e mi ha dato lo stesso errore, tolta la riga bianca, l'errore è sparito]

ah, intanto che ci sei correggi anche il commento [se ti va Wink]
ntrovato ---> trovato

3.10.2008-18.15 [per la cronaca: il post l'ho corretto io]
Top
Profilo Invia messaggio privato
francescodue
Dio minore
Dio minore


Registrato: 26/09/08 11:00
Messaggi: 567

MessaggioInviato: 03 Ott 2008 18:15    Oggetto: Rispondi citando

Eccomi.
Ho corretto secondo le tue indicazioni e tutto funziona a meraviglia.
Sei un grande.
Grazie ancora GrayWolf.
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 03 Ott 2008 18:26    Oggetto: Rispondi

francescodue ha scritto:
Eccomi.
...
Grazie ancora GrayWolf.


ancora de nada, hombre,
es un placer Wink
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Software - generale Tutti i fusi orari sono GMT + 2 ore
Vai a Precedente  1, 2, 3
Pagina 3 di 3

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi