PDA

View Full Version : [VB] muovere un file tra directory


devilchan
14-02-2005, 21:51
Ciao ragzzi,
in Vb mi dite come si fa a spostare un file da una directori ad un altra? Io uso Visual Basic 6 e devo spostare il file c:\prova.txt nella cartella c:\visual\.

Grazie a tutti

matpez
15-02-2005, 11:41
Molto semplicemente usando la funzione: FileCopy

71104
15-02-2005, 12:20
Mi sa che MoveFile va meglio per il suo caso.

matpez
15-02-2005, 12:58
Va bhe dai anche il FileCopy va bene, così nn deve richiamare per forza l'api :oink:

71104
15-02-2005, 19:59
non conosco FileCopy, ma penso che sia analoga all'API CopyFile; in tal caso è diversa da MoveFile, non è la stessa cosa; non esiste una analoga a MoveFile?

matpez
15-02-2005, 23:27
Che io sappia, già incluso dentro VB no! Bisogna proprio richiamare la funzione API :oink:

devilchan
17-02-2005, 12:39
Ragazzi non funziona.
Ma devo dikiarare qualke cosa prima di scrivere questo comando?

Mi fate un esempio pratico di come diavolo si usa sto programma, è tanto semplice ma non funziona.

Garazie

matpez
17-02-2005, 17:31
Io te lo detto, se usi il FileCopy, basta che dai il sorgente e la destinazione!

Es: FileCopy "C:\ciao.txt", "C:\Temp\ciao.txt"

71104
17-02-2005, 19:30
Ma magari a lui non interessa copiarlo, magari lo deve solo spostare; potrebbe copiarlo e poi cancellare l'originale, ma in tal caso l'operazione richiederebbe un tempo direttamente proporzionale alla dimensione del file.

matpez
17-02-2005, 19:40
eheheheh dipende se è un lamer, e vuole copiare un exe lanciato da un altra parte... nn potrebbe muovere se stesso!


hehehehehe

dai che ti prendiamo in giro :p

devilchan
17-02-2005, 21:25
non mi interesa copiarlo ma solo spostarlo.
Cosa devos crivere?

Cmq FileCopy "C:\ciao.txt", "C:\Temp\ciao.txt" non funziona mi da errore 75 io devo spostare il file kiamato prova.txt (c:\prova.txt) nella cartella c:\cartella\

come diavolo si fa?

matpez
17-02-2005, 21:56
Ti da errore perchè molto probabilemte o nn esiste il file o nn esiste la cartella di destinazione.

Cmq quella cosa funziona così:


Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long

Private Sub Form_Load()

MoveFile "c:\prova.txt","c:\visual\prova.txt"

End Sub

devilchan
18-02-2005, 01:46
Ultima curiosità, sapete far autodistruggere un file?

Del tipo io esegue il file prova.exe e alla fine dell'esecuzione si auto cancella?

71104
18-02-2005, 17:29
... e continua a dire di non essere un lamer :D
comunque un programma non può cancellare se stesso perché il file dell'eseguibile è in lettura da parte del sistema operativo (che lo sta eseguendo); hai essenzialmente due possibilità:
1) se per te va bene che il programma si autodistrugga al successivo avvio di Windows, prima di terminare puoi mettere nel registro di sistema alla chiave Run un valore col comando DEL riferito al tuo file;
2) puoi trovare il modo di farti cancellare da qualche altro processo.

comunque se stai cercando di programmare un virus/trojan/keylogger o roba simile, tieni presente che con Visual Basic non ci riuscirai mai! Usa Visual C++ 6.0 oppure Open Watcom, secondo me sono i must-have del vero lamer! :D

se magari sei più specifico e ci dici esattamente cosa deve fare questo tuo "programma di configurazione" (:D) ti si può aiutare meglio... :p

devilchan
18-02-2005, 17:42
essenzialmene il mio programma non deve far nulla.
E ti spiego il perchè.
Da poco ho ripreso ad utilizzare il Vb abbandonato da qualke anno, e nella mia testa ci sono tanti progetti e curiosità che voglio soddisfare, in ogni caso per le specifiche del programma magari te e posso dare anke in pvt e non qui.Cmq al contrario di cio ke dici, non mi voglio ne fare virus troian o quantaltro, ma voglio realizzare un full suite di informazioni per future e piu serie applicazioni.Se fai caso quasi da nessuna parte sta scritto come far autodistruggere un programma.

Se metto nel reg la voce del + Path in ogni caso rimarra nel registro tale voce.
Mi piacerebbe optare per la seconda.Come faccio?

71104
18-02-2005, 17:59
Originariamente inviato da devilchan
Se metto nel reg la voce del + Path in ogni caso rimarra nel registro tale voce.
no se la metti in RunOnce ;)

Mi piacerebbe optare per la seconda.Come faccio?
in VB di certo non puoi (e 2!) :D

ma perché vuoi usare i pvt, che oltrettutto non li guardo mai :p? mmah, per quanto tu possa dire, qui la cosa continua a subodorarmi di segreto e di misterioso... (puzza di bruciato! :D)

devilchan
19-02-2005, 00:16
che chiave dovrei scrivere nel regieto quindi?

esempio: il file è c:\prova.txt , cosa scrivo?

71104
19-02-2005, 20:13
non capisco, a che serve ora il txt? non dovevi autodistruggere l'exe?
cmq, per autodistruggere un programma in esecuzione, il programma stesso deve scrivere un valore alla chiave

HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce

e il valore deve contenere

DEL /Q <file name>

dove ovviamente al posto di <file name> ci devi mettere il percorso completo del tuo eseguibile.

A dire il vero non ho mai provato, ma dovrebbe funzionare. E' possibile che tu debba mettere il nome DOS anziché quello completo.