Rinominare insieme di file in una cartella

di il
15 risposte

Rinominare insieme di file in una cartella

Buonasera a tutti,
sono nuovo nel forum ed anche alla programmazione, quindi vi chiedo di essere pazienti
Ho una cartella di 1450 canzoni, e voglio modificare parte del nome del file in base alla presenza o meno di un valore nello stesso.
Per esempio se una canzone si intitola "01 - Broken Strings" voglio levare il "01 -" in modo che rimanga solo "Broken Strings".
Ho molte canzoni che iniziano con questa dicitura che voglio togliere e vorrei farlo in blocco con uno script in c++. Programma usato Visual Studio, ma se ne avete un altro da consigliarmi sono aperto a tutto.
Come faccio? E come si fa a dirli vai a lavorare sulla cartella MUSICA?
Grazie mille

15 Risposte

  • Re: Rinominare insieme di file in una cartella

    Perché in C/C++ se non li conosci?
  • Re: Rinominare insieme di file in una cartella

    Io, scusatemi, sono un "programmatore giocattolo" uso Arduino e non so programmare su un PC, Anche si uso Linux...
    Ma questa cosa interessa molto anche me, anch'io ho caterva di file nelle stesse condizioni
    Mi associo alla richiesta...
  • Re: Rinominare insieme di file in una cartella

    Quale richiesta? Bisognerebbe proporre del codice e poi fare delle richieste ...
  • Re: Rinominare insieme di file in una cartella

    Visual Studio ---> C# o Visual Basic. Evitate C++ per le cose banali
    Private Sub rinominaFile()
            Dim sourcePath As String = "d:\test\"
            Dim searchPattern As String = "*.mp3"
            For Each fileName As String In System.IO.Directory.GetFiles(sourcePath, searchPattern, System.IO.SearchOption.TopDirectoryOnly)
                Dim s() As String = Strings.Split(fileName, "-")
                If s.Length = 2 Then
                    If s(1).StartsWith(" ") Then
                        s(1) = s(1).Substring(1, s(1).Length - 1)
                    End If
                    System.IO.File.Move(System.IO.Path.Combine(sourcePath, fileName), System.IO.Path.Combine(sourcePath, s(1)))
                End If
            Next
    End Sub
    E comunque ha ragione Oregon, non si può fare richieste di pappa pronta. Giusto giusto questa perché è banale...
  • Re: Rinominare insieme di file in una cartella

    Corretta l'idea del C# ma Weierstrass vedrai che ti verranno chiesti altri casi (se comincia con, se finisce con, se in mezzo c'è ...) per continuare ad avere la pappa pronta ...
  • Re: Rinominare insieme di file in una cartella

    Al di là della praticità o meno, diciamo "per pura speculazione", io ci ho pensato e ripensato, ma non mi è venuto in mente niente che non passi per diverse richieste al sistema operativo, niente che faccia parte del c/c++ standard e che possa essere usato direttamente per uno scopo del genere. Mi son perso qualcosa? (del C++ so, invero, poco poco poco).
  • Re: Rinominare insieme di file in una cartella

    oregon ha scritto:


    Corretta l'idea del C# ma Weierstrass vedrai che ti verranno chiesti altri casi (se comincia con, se finisce con, se in mezzo c'è ...) per continuare ad avere la pappa pronta ...
    Hai ragione, ultima volta allora
  • Re: Rinominare insieme di file in una cartella

    AldoBaldo ha scritto:


    Al di là della praticità o meno, diciamo "per pura speculazione", io ci ho pensato e ripensato, ma non mi è venuto in mente niente che non passi per diverse richieste al sistema operativo, niente che faccia parte del c/c++ standard e che possa essere usato direttamente per uno scopo del genere. Mi son perso qualcosa? (del C++ so, invero, poco poco poco).
    C'è la funzione rename() in stdio per il C, poi la manipolazione delle stringhe te la fai con gli strumenti classici.

    Per il C++ c'è tutto boost::filesystem, che adesso fa parte dello standard C++17 come std::filesystem
  • Re: Rinominare insieme di file in una cartella

    AldoBaldo ha scritto:


    Al di là della praticità o meno, diciamo "per pura speculazione", io ci ho pensato e ripensato, ma non mi è venuto in mente niente che non passi per diverse richieste al sistema operativo, niente che faccia parte del c/c++ standard e che possa essere usato direttamente per uno scopo del genere. Mi son perso qualcosa? (del C++ so, invero, poco poco poco).
    Dopo aver letto quello che ti ha suggerito correttamente Weierstrass, in generale puoi utilizzare le funzioni specifiche del sistema operativo.
  • Re: Rinominare insieme di file in una cartella

    Scusate se mi sono "assentato", ma la vita reale a volte reclama il suo "pedaggio"...

    Non riesco proprio a immaginare come si possa usare rename() per lo scopo che ci propone AleBrutto.

    Del C++17 non so nulla. Ma proprio NULLA! Quel poco che ho studiato del C++ (da autodidatta hobbista) risale agli anni '90.
  • Re: Rinominare insieme di file in una cartella

    AldoBaldo ha scritto:


    Scusate se mi sono "assentato", ma la vita reale a volte reclama il suo "pedaggio"...

    Non riesco proprio a immaginare come si possa usare rename() per lo scopo che ci propone AleBrutto.

    Del C++17 non so nulla. Ma proprio NULLA! Quel poco che ho studiato del C++ (da autodidatta hobbista) risale agli anni '90.
    Non ho capito ... non sai usare il rename?
  • Re: Rinominare insieme di file in una cartella

    No, so cos'è rename() e come funziona: prende come parametri due stringhe che individuano rispettivamente il nome corrente di un file già esistente e il nuovo nome che si vorrebbe attribuirgli, quindi con una giravolta sostituisce il vecchio nome con quello nuovo (salvo errori). Quello che non mi è chiaro è come si può usarlo per ricavare la lista dei file contenuti in una certa cartella.
  • Re: Rinominare insieme di file in una cartella

    AldoBaldo ha scritto:


    Quello che non mi è chiaro è come si può usarlo per ricavare la lista dei file contenuti in una certa cartella.
    Quello dipende dal sistema operativo in C. In C++ non più
    #include <iostream>
    #include <filesystem>
    namespace fs = std::filesystem;
    
    int main(void){
        auto path = fs::current_path();
        for (const auto & i : fs::directory_iterator(path))
            std::cout << i.path() << std::endl;
        return 0;
    }
  • Re: Rinominare insieme di file in una cartella

    AldoBaldo ha scritto:


    come si può usarlo per ricavare la lista dei file contenuti in una certa cartella.
    Infatti non si usa il rename. Quello fa solo (appunto) il rename.

    La lista dipende dal tipo di sistema operativo, come ti avevo accennato quando scrivevo "puoi utilizzare le funzioni specifiche del sistema operativo"
Devi accedere o registrarti per scrivere nel forum
15 risposte