Newsgroup: it.comp.lang.visual-basic
Titolo: PkZip e XP no nomi lunghi?

Ho un programma scritto in VB da dove lancio il comando pkzip come
riportato nelle due righe sotto:
1) Val = Shell("C:\prova\pkzip.exe c:\prova\p.zip c:\prova\*.*",
vbNormalFocus)
2) Val = Shell("C:\provaNomeDirLungo\pkzip.exe
c:\provaNomeDirLungo\p.zip c:\provaNomeDirLungo\*.*", vbNormalFocus)
la 1) funziona, la 2) nò, sembra che il problema sia il nome della dir
"provaNomeDirLungo" che è maggiore degli 8 caratteri Dos, il bello è che
sotto W98 funziona senza problemi anche con i nomi lunghi, sotto WinXP
funziona solo con i nomi da 8.
Ho provato anche a dare al Pkzip.exe la propietà "Esugui il programma in
modalità compatibile con W98" ma nulla da fare.
Esiste una versione nuova di PkZip che superi il problema?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 funziona solo con i nomi da 8.
Non ricordo se pkzip supporti nomi lunghi, ma sicuro che il problema sia nel
nome lungo e non negli spazi contenuti?
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

racchiudi il nome lungo tra " "

 nome lungo e non negli spazi contenuti?
Quali spazi intendi, la sintassi del comando mi sembra corretta.
Ho comunque provato anche da una shell del Dos, con questi due comandi.
1) pkzip c:\prova\risultato.zip
   funziona e crea il file risultat.zip togliendo in 9 carattere dal 
nome del file,
2) pkzip c:\provanomedirlungo\risultato.zip
   Non funziona, e ritorna: "...   
                             ...  
                             <E01>  can't create:
c:\provanomedirlungo\risultato.zip"
il problema è lo stesso, il bello è che sotto Win98 funziona anche il 2)
provare per credere.
L'unica differenza tra i due comandi è il nome della Dir.
PS: Grazie dell'interessamento.


L'unica differenza tra i due comandi è il nome della Dir.
  Sospetto che se la partizione e' una FAT pkzip trovi anche il nome
corto e funzioni, se la partizione e' NTFS no. Mi pare che esista una
versione di pkzip a 32 bit che legge anche i nomi lunghi ma e' un
ricordo nebuloso.
  Ciao :-)
  Massimo
  Nell'indirizzo, sostituire "micio" con "mc"

 ha scritto

http://www.pkzip.com
ma dubito che sia ancora free.
pkzip se ricordo era un exe dos vero e proprio
almeno, io ne ho delle versioni vecchiotte
 Directory di C:\sys\dos_util\varie.zip
01/06/1988  00.00               21.670 pkarc.exe
30/07/1992  01.13               15.862 pklite.exe
28/06/1994  09.16               15.112 pkunpak.exe
01/05/1992  00.00               29.656 pkunzip.exe
29/05/1997  17.20                  967 pkunzip.pif
01/10/1989  00.00               15.112 pkxarc.exe
01/05/1992  00.00               42.427 pkzip.exe
05/03/1996  13.40                  967 pkzip.pif
30/09/1996  12.40                4.685 pkzip.txt
01/05/1992  00.00                7.687 pkzipfix.exe
              10 File        154.145 byte
               0 Directory  16.644.427.776 byte disponibili
quelle senz'altro i nomi lunghi non sanno proprio cosa siano.
correggetemi se sbaglio: in nt/2000/xp gli exe dos girano in macchine
virtuali a 16bit, in win9 in modo piu' o meno nativo. anche la console e'
diversa: command <> cmd
in alternativa, se non vuoi integrare zlib o altre librerie simili, puoi
forse guardare se e' gestibile in commandline qualcuno degli altri infiniti
zipper free, es. l'italiano zipgenius, o ultimate zip ecc.
--
ciao
http://www.sundaysw.com

 racchiudi il nome lungo tra " "
cosa intendi, ho provato ma non ci riesco:
Pkzip "C:\provanomedirlungo\risultato.zip"
intendi questo o altro?


 intendi questo o altro?
Credo intendesse:
Pkzip C:\"provanomedirlungo"\risultato.zip
Andrea

   Nell'indirizzo, sostituire "micio" con "mc"
Si, la partizione del mio WinWP č NTFS;
i nomi delle dir non li posso toccare, altrimenti il 
problema sarebbe stato meno grave.


 -
sě intendo quello. io l'avevo fatto con l'arj e funzionava.
poi,x quanto riguarda il discorso FAT/ NTFS non saprei...

 poi,x quanto riguarda il discorso FAT/ NTFS non saprei...
Ho provato sia 
Pkzip "C:\provanomedirlungo\risultato.zip"
 
che 
Pkzip C:\"provanomedirlungo"\risultato.zip
ma senza successo.


 ha scritto


 funziona solo con i nomi da 8.
http://www.winzip.com/wzcline.htm
Scaricalo, funziona su XP e gestisce i nomi lunghi. La sintassi è
praticamente identica a PKZIP
Nota dolente: Richiede un tasto per procedere...
Cerca anche con Google WZZIP, troverai menzionato il problema (ovviamente
voluto), ma non ho trovato l'eventuale "bypass"

 problema sarebbe stato meno grave.
La soluzione e' semplice: le directory DEVONO esistere affinche' pkzip possa
funzionare, quindi esegui un MkDir prima di lanciarlo; dopodiche'
GetShortPathName (API) ti restituisce il nome della directory da dare in
pasto a pkzip: dato che il nome del file lo puoi decidere, ti basta
contenerlo in 8.3 e sei a posto.
Ciaotutti,
* - a volte ritornano

 * - a volte ritornano
In ogni caso, ben-rivisto

 * - a volte ritornano
Ti ringrazio, credo che sia la soluzione migliore.



Chi ha detto che devi capirlo, scusa?
A parte quello, essenco che programma e' tuo, nello zip, nel codice e nel
fie ci metti quello che ti pare: se il nome DEVE essere non-8.3 compliant,
per qualsiasi ragione, ti basta rinominarlo dopo l'espansione. A questo fine
rimappi tu i file con nomi non significativi (tipo 12345678.9ab) salvandoti
il mapping 8.3<=>128.128 in un file, questo si' di nome significativo
(index.dat), che poi viene a sua volta zippato per consentirti di rimappare
i nomi dopo lě'espansione dell'archivio.
Ciaotutti,
*

 per qualsiasi ragione, ti basta rinominarlo dopo l'espansione.
Appunto: Se anche i file all'interno dello zip sono "troncati" a 8.3 (e come
tali vengono giù quando esplodi lo zip), come posso ricordarmi del loro vero
nome (quello esteso, per intenderci)? E se anche me ne ricordassi, sai che
palle doverli rinominare tutti?! Mi riferisco, ovviamente, anche a uno zip
creato (fuori da qualsiasi programma) per recuperare spazio, da gestirsi "a
manina"...

 programma) per recuperare spazio, da gestirsi "a manina"...
In quel caso non usi un programma dos che risale agli anni 80, usi winzip
che supporta perfettamente i nomi lunghi.
Ciaotutti,
*

 che supporta perfettamente i nomi lunghi.
Usavo PKZIP in un file BAT, ma su XP presenta il problema nato da questo
topic, ora con WZZIP il problema non c'č piů. Perchč un file .BAT? Boh,
forse perchč č sempre stato cosě e non mi sono mai sognato di trovare
soluzioni alternative...

 questo topic,
PKZIP, salvo sia in versione 32, non supporta i nomi lunghi.  E non li ha
mai supportati, visto che faceva chiamate all'INT21 che risalivano agli anni
80 e appunto supportavano solo i nomi 8.3 (avevano strutture da 11
caratteri).
Ora, visto che siamo in it.comp.lang.visual.basic, io assumo che una persona
che mi parla di un problema di nomi di file con pkzip stia scrivendo un
programma che comprime dei file e abbia problemi nel gestire nomi di file
lunghi. La soluzione e': non usare nomi di file lunghi.
Se per qualche ragione e' indispensabile usare nomi di file lunghi, allora
si passa al piano B, rimappare i nomi dei file alla compressione e
successiva decompressione.
Ciaotutti,
*

 successiva decompressione.
WWZIP...

 riportato nelle due righe sotto:
Eh...
Ciaotutti,
*

 Eh...
Ok, touchč, ma PKZIP mi č frullato troppo spesso nella testa e nelle dita.
Mi ero scordato del fatto che Franco lo usi da VB, io lo uso solo, come
dicevo, da .BAT
Pardoooooon!