22 Dicembre 2011 11:41:21 · [The Swiss File Knife e File Batch]
Postato da
Ecco un'altra pillola di uso dello scripting dos windows. Per fare questa piccola guida introduttiva mi servirò di uno script che mi sono fatto proprio ieri per creare un listato di tutti i file presenti nel mio disco rigido. Qui naturalmente qualcuno salterà dalla sedia dicendo che basta un semplice  dir E:\Archivio >Lista.txt ma potrete notare voi stessi che il comandino dir non sa niente della codifica delle accentate che si limita a troncare e poi non è proprio il massimo direi. Perciò mi appoggerò alla mia utility preferita Sfk.exe! Questa utility oltre ad essere Open Source è anche molto potente permettendo un controllo completo su qualunque tipo di file. Vediamo un esempio pratico: creiamo una lista con data, ora, dimensione e nome file. Il tutto senza perdere le accentate ed il tutto perfettamente formattato in modalità ascii puro.

CreaLista.bat:
TITLE OPERAZIONI SUI FILE
CLS
:SELECT
@ECHO OFF
ECHO.
ECHO DIGITA LA DIRECTORY DA PROCESSARE:
ECHO.
ECHO [e] Esci dai comandi
ECHO.
set disk=
set /P disk=Digita adesso il Percorso: %=%
ECHO.
ECHO Hai digitato "%disk%"
ECHO.
IF "%disk%" equ "e" (GOTO EXIT)
IF "%disk%" equ "" (GOTO EXIT)
ECHO DIGITA IL PERCORSO ED IL NOME DEL FILE DA SALVARE:
ECHO.
ECHO [e] Esci dai comandi
ECHO.
set file=
set /P file=Digita adesso il File: %=%
ECHO.
ECHO Hai scelto di salvare il file in "%file%"
ECHO.
IF "%file%" equ "e" (GOTO EXIT)
IF "%file%" equ "" (GOTO EXIT)
ECHO POSSIBILI SCELTE UTENTE:
ECHO.
ECHO [1] Lista tutti i file nelle directory
ECHO [2] Lista solo i file doc nelle directory
ECHO [e] Esci dai comandi
ECHO.
SET /p s=
IF "%s%" equ "1" (GOTO ALL)
IF "%s%" equ "2" (GOTO DOC)
IF "%s%" equ "e" (GOTO EXIT)
ECHO selezione errata!
GOTO SELECT
::------------------------------------------------- ALL
:ALL
ECHO.
ECHO Sto processando tutti i file nel percorso selezionato...
sfk.exe list -time -size -nosub -dir "%disk%" >"%file%"
ECHO.
ECHO Finito!
ECHO.
GOTO SELECT
::------------------------------------------------- DOC
:DOC
ECHO.
ECHO Sto processando tutti i file DOC nel percorso selezionato...
sfk.exe list -time -size -nosub -dir "%disk%" -file .doc >"%file%"
ECHO.
ECHO Finito!
ECHO.
GOTO SELECT
::------------------------------------------------- EXIT
:EXIT

Ricordiamoci di scaricare Sfk.exe nella stessa cartella dove risiede il file batch CreaLista.bat. Naturalmente se vogliamo possiamo anche creare una variante che crea una unica lista e di volta in volta accoda alla stessa altri file processati. Può tornare utile nel caso si voglia un solo listato invece di parecchi file di listato. La variante è quella che segue...

CreaListaUnica.bat:
TITLE OPERAZIONI SUI FILE
CLS
:SELECT
@ECHO OFF
ECHO.
ECHO DIGITA LA DIRECTORY DA PROCESSARE:
ECHO.
ECHO [e] Esci dai comandi
ECHO.
set disk=
set /P disk=Digita adesso il Percorso: %=%
ECHO.
ECHO Hai digitato "%disk%"
ECHO.
IF "%disk%" equ "e" (GOTO EXIT)
IF "%disk%" equ "" (GOTO EXIT)
ECHO DIGITA IL PERCORSO ED IL NOME DEL FILE DA SALVARE:
ECHO.
ECHO [e] Esci dai comandi
ECHO.
set file=
set /P file=Digita adesso il File: %=%
ECHO.
ECHO Hai scelto di salvare il file in "%file%"
ECHO.
IF "%file%" equ "e" (GOTO EXIT)
IF "%file%" equ "" (GOTO EXIT)
ECHO POSSIBILI SCELTE UTENTE:
ECHO.
ECHO [1] Lista tutti i file nelle directory
ECHO [2] Lista solo i file doc nelle directory
ECHO [e] Esci dai comandi
ECHO.
SET /p s=
IF "%s%" equ "1" (GOTO ALL)
IF "%s%" equ "2" (GOTO DOC)
IF "%s%" equ "e" (GOTO EXIT)
ECHO selezione errata!
GOTO SELECT
::------------------------------------------------- ALL
:ALL
ECHO.
ECHO Sto processando tutti i file nel percorso selezionato...
sfk.exe list -time -size -nosub -dir "%disk%" >>"%file%"
ECHO.
ECHO Finito!
ECHO.
GOTO SELECT
::------------------------------------------------- DOC
:DOC
ECHO.
ECHO Sto processando tutti i file DOC nel percorso selezionato...
sfk.exe list -time -size -nosub -dir "%disk%" -file .doc >>"%file%"
ECHO.
ECHO Finito!
ECHO.
GOTO SELECT
::------------------------------------------------- EXIT
:EXIT

Se volete fare una lista ricorsiva togliete dalla riga comando -nosub che significa "No Subdirectory" ed in questo modo verrà scansionato tutto l'hard drive cosa che io non consiglio perché verrebbe fuori una lista enorme. Notate i due caratteri aggiunti nel secondo file batch ">>"... dice di accodare alla lista esistente la nuova lista in modo da averne una sola. Per fare un esempio pratico lanciate il file batch e rispondete correttamente alle domande che lo script vi farà... per prima cosa vi chiederà il percorso da listare e per esempio mettiamo E:\Archivio senza doppie virgolette; alla seconda domanda che lo script vi porrà potrete rispondere E:\Lista.txt senza doppie virgolette; infine vi verrà mostrato un menù dal quale scegliere se volete processare tutti i file oppure solamente i file doc. Adesso sperimentate un pochino voi questa breve guida e buon divertimento  




Copyright © 2002-2018, Alessandro Marinuzzi