Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Copia file
Forum - Visual Basic 6 - Copia file

Avatar
barilla (Normal User)
Newbie


Messaggi: 8
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 17:49
Giovedì, 11/05/2017
Salve,
avendo perso i sorgenti di un mio vecchio programma non riesco più a capire come ho fatto a farlo funzionare.
In pratica ho dei file che devo spostare e/o rinominare che sono composti tipo così:

PIPPO.12345678.TXT
PLUTO.87654321.TXT
ecc.

Sapendo sempre i nomi iniziali, fino al punto, dovrei convertirli così:

PIPPO.TXT
PLUTO.TXT
ECC.
Il codice citava pressappoco così:

Codice sorgente - presumibilmente VB.NET

  1. Dim strFolder As String
  2. Dim strFile As String
  3.  
  4.  strFolder = "C:\PROVA\"
  5.  strFile = Dir(strFolder & "PIPPO*.TXT")
  6.  Do While Len(strFile) > 0
  7.  If InStr(strFile, "PIPPO*") > 0 Then
  8.  FileCopy "C:\PROVA\PIPPO*.TXT", "C:\PROVA\PIPPO.TXT"
  9. End If
  10. strFile = Dir()
  11. Loop



anzi mi ricordo che era più corto del tipo:

Codice sorgente - presumibilmente Delphi

  1. File = Dir("C:\PROVA\PIPPO*.TXT")
  2. If Len(File) > 0 Then
  3. FileCopy "C:\PROVA\PIPPO*.TXT", "C:\PROVA\PIPPO.TXT"
  4. End If



Ho provato e riprovato ma il file è sempre "not found" non riesco a capire dove sbaglio.

Grazie e buona serata

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:37
Giovedì, 11/05/2017
Ma devi proprio copiarlo o solo rinominarlo ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
barilla (Normal User)
Newbie


Messaggi: 8
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 20:09
Giovedì, 11/05/2017
copiarlo in una nuova cartella rinominandolo

Grazie

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 23:07
Giovedì, 11/05/2017
Copiare e rinominare sono due cose differenti. La frase "copiarlo .... rinominandolo" non ha senso.

Specifica meglio.

Io mi farei passare il nome del file e a quello applicherei la regex [inizio](caratteri validi).(uno o più numeri). (Qualsiasi cosa)[fine]

E in caso di match userei il risultato del primo gruppo come nome del file.

PM Quote
Avatar
barilla (Normal User)
Newbie


Messaggi: 8
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 9:15
Venerdì, 12/05/2017
Premetto che non sono un programmatore sono uno smanettone che prende parti di codici li assembla per poi generare programmini per le mie varie esigenze.
Per essere più chiaro.... mi accontento solo di rinominarlo con un nome certo e da questo poi posso fare qualsiasi cosa.

Grazie

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:30
Venerdì, 12/05/2017
Il file può essere copiato rinominandolo, non vedo il problema.

La faccenda è un'altra.

Si è detto che i file possono chiamarsi

PIPPO.12345678.TXT
PLUTO.87654321.TXT

mentre nel codice tu cerchi soltanto quelli che iniziano per PIPPO*

Quindi chiarisci perché tutti gli altri non li troveresti.

Se ho capito bene, i file iniziali sono tutti dei .txt, il nome è fatto da 2 parti intervallate da un punto e tu vuoi tenere solo la prima parte. Corretto?

Fra l'altro parli di cartelle diverse per l'origine e la destinazione ma nel codice utilizzi sempre la stessa cartella.

Ultima modifica effettuata da nessuno il 12/05/2017 alle 14:31


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
barilla (Normal User)
Newbie


Messaggi: 8
Iscritto: 13/05/2007

Segnala al moderatore
Postato alle 17:16
Venerdì, 12/05/2017
Scusate ma nel voler disturbare il meno possibile ho complicato tutto.

Allora in realtà i file sono 3 e sono tipo:

PIPPO.123456789012.TXT
PLUTO.210987654321.TXT
ORAZIO.(NUMERO CASUALE A 12 CIFRE).TXT

Essi vengono generati/scaricati nel percorso di un pc con Xp che è questo:

"Documents and Settings\Nomepc\Documenti\Download\"

il mio eseguibile li prendeva da lì, li spostava nella cartella "C:\", li rinominava solo con il nome iniziale "PIPPO, PLUTO, ECC." senza estensione dopodichè creava un backup(con nome,giorno e ora) in un'altra cartella e cancellava i riferimenti e il tutto si chiudeva a prescindere se i file erano presenti tutti, qualcuno, nessuno.
Questo è durato per un paio di anni senza problemi.
Il problema è subentrato poichè ho dovuto aggiornare il pc a Seven, è cambiato solo il percorso di download, quindi ho cercato i vecchi sorgenti ma per sbaglio li avevo riscritti.
Ho cercato di riscrivere il listato ma stavolta non riesco proprio ad arrivarci.

Grazie per la pazienza e scusate ancora

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 20:44
Domenica, 04/02/2018
VB6

Option Explicit

' AGGIUNGERE sul form il componente FileListBox  (File1) che visualizza i files contenuti in una cartella

' non vengono eseguiti controlli
' se PercorsoSorgente non esiste errore
' se PercorsoDestinazione già esiste errore (improbabile visto che il nome cambia ad ogni secondo)
' utilizzate molte variabili per permettere il controllo delle operazioni svolte step by step
' non ho usato il riferimento Microsoft Scripting Runtime (scrrun.dll) ma consiglio di studiarlo


Private Sub Form_Load()

Dim PercorsoSorgente As String
Dim PercorsoDestinazione As String
Dim NFiles As Long
Dim PosizionePunto As Integer
Dim FileInEsame As String
Dim NuovoNome As String
Dim DataOraBackup As String

    ' mettere a false se si vuole eseguire in background
    Form1.Visible = True

    '------------------- VARIABILI DA COMPILARE COME ESIGENZA -----------
    
    ' percorso dove risiedono i files .txt con slash finale, DEVE ESISTERE !!
    PercorsoSorgente = "c:\Documents and Settings\Nomepc\Documenti\Download\"
    
    ' percorso e nome della cartella (parte iniziale) di destinazione, senza slash alla fine
    PercorsoDestinazione = "c:\backup"  ' al nome cartella scelto verranno aggiunti data e ora

    '---------------------------------------------------------------------------
    
    File1.Path = PercorsoSorgente       ' imposta il percorso
    File1.Pattern = "*.txt"                   ' visualizza solo i files con estensione .txt"
    
    DataOraBackup = Now                  ' leggo l'ora e la data attuale dall'orologio del pc
    
    ' sostituisco il carattere "/" non ammesso sul nome della cartella con il carattere "-"
    DataOraBackup = Replace(DataOraBackup, "/", "-")
    
    ' aggiungo al nome della cartella la data e l'ora
    PercorsoDestinazione = PercorsoDestinazione & " " & DataOraBackup & "\"
    
    MkDir (PercorsoDestinazione)        ' creo la nuova cartella
    
    ' imposto un ciclo da 1 al numero dei files .txt presenti nella cartella sorgente
    For NFiles = 1 To File1.ListCount
    
        ' leggo il nome del file alla posizione -1 perchè l'indice parte da zero
        FileInEsame = File1.List(NFiles - 1)
        
        ' memorizzo la posizione del primo punto all'interno del nome del file
        PosizionePunto = InStr(1, FileInEsame, ".", vbTextCompare)
        
        ' ricreo il nuovo nome prendendo il percorso,  la prima parte del nome del file e aggiungendo txt
        NuovoNome = PercorsoDestinazione & Left(FileInEsame, PosizionePunto) & "txt"
        
        ' copio il file dal PercorsoSorgente+FileInEsame nel nuovo percorso
        Call FileCopy(PercorsoSorgente & FileInEsame, NuovoNome)
    
    Next NFiles
    
    If Form1.Visible = False Then End   ' se il form non è visibile il programma finisce

End Sub


Carlo ha allegato un file: PieroTofy.zip (2153 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Carlo il 05/02/2018 alle 11:56


in programmazione tutto è permesso
PM Quote