domenica 16 luglio 2017

File batch per creare una cartella con icona personalizzata in Windows

Vi propongo un comodo file batch per creare una cartella sul Desktop dell'utente corrente e assegnarle una icona personalizzata in Windows.

Il file batch prevede che abbiate un'icona personalizzata salvata nella directory C:\Icone.

Ecco il testo per creare la cartella nella posizione in cui salvate il file .bat:

CLS
@echo ===============================================
@echo   CREAZIONE CARTELLE CON ICONE PERSONALIZZATE
@echo ===============================================
@echo.
@echo Creazione cartelle...
@echo ----------------------------------
@echo.
cd %userprofile%
md Cartella
attrib +s Cartella
cd Cartella
@echo.
@echo Assegnazione icone...
@echo ----------------------------------
echo [.ShellClassInfo] >> Desktop.ini
echo IconResource=C:\Icone\icona.ico,0 >> Desktop.ini
echo [ViewState] >> Desktop.ini
echo Mode= >> Desktop.ini
echo Vid= >> Desktop.ini
echo FolderType=Generic >> Desktop.ini
@echo.
attrib +h +s Desktop.ini
PAUSE
Lo script si posiziona nella cartella dell'utente corrente (cd %userprofile%), crea la cartella, le attribuisce lo status di "cartella di sistema", necessario affinché l'icona sia aggiornata, quindi crea il file Desktop.ini, con al suo interno le informazioni sull'icona da usare.

Chiaramente dovete sostituire il percorso di IconResource con quello di vostro interesse. Stessa cosa bisogna cambiare lo 0 dopo il nome dell'icona, se per caso il file icona ha al suo interno più icone e vogliate sceglierne una differente (la prima icona è indicizzata con 0, dunque la seconda sarà 1, la terza 2 e via discorrendo).

Al file Desktop.ini è poi assegnato lo status di file di sistema e di file nascosto.

Per visualizzare l'icona aggiornata potrebbe essere necessario premere F5 per aggiornare la visualizzazione.

9 commenti:

  1. Ottimo articolo.
    Vorrei sapere se c'è un modo, non per cambiarne una, ma per cambiare tante icone tutte insieme. Semplificando si potrebbe attribuire alla cartella lo stesso nome dell'icona. Ciao e Grazie

    RispondiElimina
  2. Ciao Azza, lieto che ti sia stato utile. Ti segnalo che nel post originale alla nona riga del codice c'era un errore che adesso ho corretto. Avevo infatti scritto "cd %localhost%" invece di "cd %userprofile%".

    Per rispondere alla domanda nel tuo commento, invece, nel caso hai necessità di creare tante cartelle personalizzate quante sono le icone a tua disposizione, il codice da usare sarebbe questo seguente. Per facilità di scrittura ho ipotizzato che tu abbia la solita cartella "C:\Icone" e che le cartelle personalizzate verranno create in una sottodirectory chiamata "C:\Icone\cartelle_personalizzate", basandoci sul nome delle icone. Questo codice dovrai inserirlo in un file .bat all'interno di "C:\Icone":

    FOR /r %%i IN (*.ico) DO (
    @ECHO %%~ni
    md C:\icone\cartelle_personalizzate\%%~ni
    attrib +s C:\icone\cartelle_personalizzate\%%~ni
    cd C:\icone\cartelle_personalizzate\%%~ni
    @echo.
    @echo Assegnazione icone...
    @echo ----------------------------------
    echo [.ShellClassInfo] >> Desktop.ini
    echo IconResource=C:\Icone\%%~ni.ico,0 >> Desktop.ini
    echo [ViewState] >> Desktop.ini
    echo Mode= >> Desktop.ini
    echo Vid= >> Desktop.ini
    echo FolderType=Generic >> Desktop.ini
    @echo.
    attrib +h +s Desktop.ini
    )

    RispondiElimina
  3. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  4. Grazie per la risposta tempestiva.
    Questa serie di comandi è quasi perfetta, c'è solo un problema che ho solo io.
    In pratica finchè le icone di partenza hanno un nome di una sola parola va tutto bene, se invece il nome ha più parole mi fa una cosa strana: mi crea tante cartelle quante ce ne sono tra uno spazio e l'altro.
    Ad esempio: se la mia icona si intitola "Documenti di Famiglia" mi crea le cartelle "Documenti", "di" e "Famiglia".
    Mi sa che è lo spazio che crea scompiglio.
    E poi non mi associa le icone.

    Forse sbaglio io qualcosa

    Grazie per la pazienza

    RispondiElimina
    Risposte
    1. Ciao Azza, sì, il problema dipende dal fatto che le icone hanno lo spazio nel nome. Puoi provare a racchiudere tra doppie virgolette il percorso, ad esempio il comando md che crea la directory, diverrebbe:
      md "C:\icone\cartelle_personalizzate\%%~ni"

      Adesso ti sto rispondendo al volo, non ho fatto prove. Non ricordo come si comporta la variabile %%~ni fra le virgolette, ma penso che dovrebbe andare bene. Invece non so alla riga che viene scritta in Dekstop.ini, se il percorso va bene virgolettato, parlo di questa riga:
      echo IconResource=C:\Icone\%%~ni.ico,0 >> Desktop.ini

      Potresti provare a creare manualmente la cartella con icona personalizzata che punta ad un'icona con lo spazio nel nome, e poi editare il Dekstop.ini che ci trovi all'interno per vedere come viene scritta quella riga (se il Desktop.ini non è visibile, devi abilitare la visualizzazione dei file nascosti).

      Oppure, cosa secondo me più semplice, sostituisci lo spazio con il trattino basso _ nel nome delle icone, lanci il file batch e poi rimetti lo spazio. Se sono tante icone, puoi usare una utility per rinominare in massa i file. Io uso Renamer.

      Elimina
  5. Scusami, ti sto dando noia.
    Ti spiego brevemente il mio "problema".
    In pratica, a moltissime cartelle che creo associo un'icona personalizzata.
    Avendo dovuto formattare il PC e, per riavere le icone come erano prima, dovrei fare per tutte la procedura standard: Tasto DX sulla cartella,Proprietà, Personalizza, Cambia icona, ecc...
    Dovrei farlo migliaia di volte, hai in mente qualche metodo più sbrigativo?
    Per il momento ti ringrazio per tutte le dritte che mi hai dato in precedenza.

    RispondiElimina
    Risposte
    1. Ciao Azza, sì avevo capito. Allora, ho provato con le virgolette come avevo detto nell'altra risposta e vengono create correttamente le cartelle anche con lo spazio nel nome.

      Ipotizzando che tu metta le icone in C:\Icone e nella stessa cartella metti il file .bat, il codice da usare è il seguente:


      FOR /r %%i IN (*.ico) DO (
      @ECHO %%~ni
      md "C:\icone\cartelle_personalizzate\%%~ni"
      attrib +s "C:\icone\cartelle_personalizzate\%%~ni"
      cd "C:\icone\cartelle_personalizzate\%%~ni"
      @echo.
      @echo Assegnazione icone...
      @echo ----------------------------------
      echo [.ShellClassInfo] >> Desktop.ini
      echo IconResource="C:\Icone\%%~ni.ico",0 >> Desktop.ini
      echo [ViewState] >> Desktop.ini
      echo Mode= >> Desktop.ini
      echo Vid= >> Desktop.ini
      echo FolderType=Generic >> Desktop.ini
      @echo.
      attrib +h +s Desktop.ini
      )


      Ti creerà le cartelle con icona personalizzata in C:\Icone\cartelle_personalizzate. Se non la fai tu prima la directory "cartelle_personalizzate" te la crea lo script.

      Spero che funzioni, altrimenti l'alternativa è crare un programmino in Python.

      Elimina
  6. Ho provato il codice e va benissimo, mi crea solo qualche difficoltà con i nomi che hanno caratteri accentati, l'apostrofo ecc. Li ho sistemati manualmente.

    Ti ringrazio per i consigli e per la pazienza

    Ciao!

    RispondiElimina
    Risposte
    1. Figurati. Lieto di esserti stato di aiuto. Alla prossima! ;-)

      Elimina

Ciao, se hai domande o semplicemente vuoi farmi sapere che ti è stato utile quest'articolo lascia un commento ;-)

A causa dello spam sono stato costretto ad abilitare la risposta solo per gli utenti loggati con account Google. So che può essere un fastidio per alcuni, ma è l'unica soluzione. Il vantaggio è che riceverai una notifica quando risponderò.