Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83

    Errore creazione zip da command line

    Ciao a tutti...
    ho una SSIS che, tra le altre operazioni, crea delle cartelle e le zippa.
    La creazione dello zip avviene eseguendo il seguente batch:

    codice:
    "C:\Program Files\WinZip\winzip32.exe" -min -a -r %1.zip %1
    dove %1 è la cartella da zippare, ad es "C:\NomeCartella".
    La cartella NomeCartella contiene altre cartelle (anche loro da zippare). Tramite un foreach loop leggo tutte le cartelle contenute in NomeCartella (nell'esempio, A, B, C) e, per ognuna, eseguo il batch.

    La creazione dello zip è corretta ma ho il seguente errore:

    Action: Add (and replace) files Include subfolders: yes Save full path: no
    Adding A\
    Adding A\1.txt
    Adding B\
    Adding B\2.txt
    Adding C\
    Adding C\3.txt
    Warning: The following file is open by another program. If that program
    Warning: writes to the file while WinZip is zipping the file, the zipped
    Warning: file may be corrupt: C:\...\...\...\NomeCartella\C\3.txt
    copying Zip file

    Winzip rimane aperto in attesa ke un utente clicchi su ok a questo errore e qui sta il problema: la "zippatura" viene lanciata da una SSIS che andrà schedulata, ad esempio, ogni giorno di notte, quindi non posso, la mattina dopo, cliccare su ok tante volte quanti errori ci sono... I file zippati, poi, son corretti, non contengono errori come dice il messaggio di winzip, quindi il problema è solo la visualizzazione dell'alert.

    Come posso risolvere ciò? Cioè come posso evitare che mi si apra questo messaggio d'errore? :master: :master: :master:
    Ho già cercato sulle opzioni di winzip ma non ho trovato nulla...

    Grazie...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Mmm... hai letto il Regolamento?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Possibilità 1: se il file che WinZip segnala come aperto è aperto dalla tua applicazione chiudilo. Possibilità 2: prova ad usare un altro tool per zippare i file, come IZArc (che è gratuito): non dovrebbe produrre questo avviso. L'alternativa migliore comunque sarebbe di scrivere del codice che comprima i file senza appoggiarsi ad applicazioni esterne (magari usando librerie).
    P.S.: non è bene cablare un percorso nel codice, come mi sembra che tu stia facendo nel tuo programma...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    Ciao, innanzitutto grazie x la risposta...

    Possibilità 1: se il file che WinZip segnala come aperto è aperto dalla tua applicazione chiudilo
    il file nn è aperto... viene creato da codice... magari ora controllo se c'è qualche stream ancora aperto.

    Possibilità 2: prova ad usare un altro tool per zippare i file, come IZArc (che è gratuito): non dovrebbe produrre questo avviso... . L'alternativa migliore comunque sarebbe di scrivere del codice che comprima i file senza appoggiarsi ad applicazioni esterne (magari usando librerie).
    ho provato ad usare la classe gzipstream del framework ma lo zip che mi crea risulta compromesso. se infatti apro il file zip, risulta danneggiato e quindi inutilizzabile. se invece lo decomprimo con la stessa classe gzipstream la decompressione è perfetta. il problema è che a me serve lo zip, cioè l'utente della mia applicazione deve poter scaricare lo zip, mica i file decompressi... Per non installare ulteriori librerie ho pensato fosse + semplice utilizzare winzip visto che era a disposizione...

    Grazie ancora

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Manca ancora il linguaggio e la versione di cui stiamo parlando, obbligatoria come da Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83

    [VB.NET]

    Scusami ma non sapevo che linguaggio mettere.
    Il linguaggio della SSIS è VB.NET, framework 2.0

  7. #7
    Originariamente inviato da acsp
    ho provato ad usare la classe gzipstream del framework ma lo zip che mi crea risulta compromesso. se infatti apro il file zip, risulta danneggiato e quindi inutilizzabile. se invece lo decomprimo con la stessa classe gzipstream la decompressione è perfetta.
    La classe GZipStream non crea file .zip, ma file di dati compressi usando l'algoritmo gzip (credo che di fatto potrebbe generare un file .gz). Per creare degli zip devi usare librerie di terze parti, come questa.
    Per non installare ulteriori librerie ho pensato fosse + semplice utilizzare winzip visto che era a disposizione...
    Qui sta l'errore: non puoi assumere che WinZip sia a disposizione, perché chi installa il tuo programma potrebbe non aver installato WinZip (magari in favore di un programma gratuito e migliore come il già citato IZArc, o TugZip o ZipGenius).
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    Ciao

    non puoi assumere che WinZip sia a disposizione, perché chi installa il tuo programma potrebbe non aver installato WinZip
    winzip so ke è a disposizione x' la mia applicazione è una applicazione web e sul server c'è.

    Cmq grazie x la risposta, proverò con la libreria segnalata...


  9. #9
    Originariamente inviato da acsp
    Ciao
    winzip so ke è a disposizione x' la mia applicazione è una applicazione web e sul server c'è.
    Be', se per ASP.NET c'è un apposito forum dedicato... comunque ormai...
    Cmq grazie x la risposta, proverò con la libreria segnalata...
    Tra l'altro usando una libreria e non appoggiandoti ad applicazioni esterne aumenti anche l'efficienza del tuo codice: l'avvio di un nuovo processo ad ogni richiesta sarebbe stato un overhead notevole.
    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.