|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2001
Città: Cagliari
Messaggi: 48
|
how to... spostare file in VB?
ciao
scusate la domanda banale: come si fa a spostare un file o una directory in VisualBasic senza ricorrere direttamente alle API di windows? in cosa sbaglio? Set fso = CreateObject("Scripting.FileSystemObject") Set cartella_princ = fso.GetFolder(Path) On Error GoTo errori For Each cartella In cartella_princ.subfolders i = 1 For Each elemento In cartella.Files If (elemento.Name <> cartella.Name & "_" & i & ".jpg") Then elemento.Name = cartella.Name & "_" & i & ".jpg" elemento.Move ("C:\file_spostati") End If i = i + 1 Next Next L'errore è: File Already Exists codice: 58 ciao, grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Da quanto mi ricordo, il "move" dell'oggetto filesystemobject restituisce un errore se si tenta di spostare (o rinominare) il file in una posizione dove esiste gia' un'altro file avente tale nome. Ecco perche' ti esce tale errore.
La sovrascrittura dei file quindi non si puo' fare con questo metodo, l'unica alternativa e' controllare che nel path di destinazione non esista un file avente stesso nome (in caso contrario puoi sempre cancellarlo). Per verificare la presenza di un file usa il metodo "exist", mentre per cancellarlo usa delete. In alternativa puoi usare "copy" per copiare i file nella nuova cartella di destinazione (abilitando il flag di sovrascrittura) e quindi cancellare i file dalla cartella origine. Bye
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2001
Città: Cagliari
Messaggi: 48
|
il punto è che non esiste alcun file con quel nome nella cartella di arrivo. cmq ho provato col metodo copy, sostituendo la precedente con:
elemento.Copy "C:\file_spostati", True ma mi da un altro errore: Permission Denied, codice 70 grazie bsummer |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Hmmm. Sembra quasi che ci siano problemi coi permessi sui file...
Prova a spostare il file utilizzando il "move" o il "copy" dell''oggetto filsystemobject . La sintassi dovrebbe essere del tipo: fso.move(<percorso + nome file>,<destinazione + nome file> Forse ti dara' lo stesso errore, ma non si sa mai. Inoltre hai provato a leggere nell'help in linea se ci sono note riguardanti eventuali errori (come ad esempio quello che ti ho citato prima, cioe' l'impossibilita' di muovere un file su di una locazione dove e' gia' presente un file omonimo) ? Cmq, stasera se mi ricordo do un'occhiata al vb... Bye
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ma non fate prima a spostare usando la funzione Name del VB ?
A parte FSO, non fate prima ?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Credo di aver trovato l'errore.
Aggiungi lo slash alla fine del percorso. Cioè invece di scrivere elemento.Move ("C:\file_spostati") scrivi elemento.Move("C:\file_spostati\") Se non metti lo slash vb crede che file_spostati sia il nome che vuoi dare al file. In realtà tale nome è già stato assegnato (ad una cartella in questo caso) quindi da errore. Bye
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jun 2001
Città: Cagliari
Messaggi: 48
|
grazie 1000 bsummer
Ora funziona anche il metodo move. Complimenti per l'intuizione, nella documentazione che ho non ho trovato nemmeno un esempio a riguardo grazie ancora e ciao |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Prego, non c'e' di che.
Cmq, i casi di errore sono riportati nell'help in linea del vb. Ti consiglio di installare l'msdn, se non l'hai gia' fatto. Bye
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:34.



















