Il giorno Wed, 17 Nov 2010 17:35:38 +0100, "R. C."
Post by unknownciò che vuoi fare è fattibile ma richiede una discreta conoscenza del
semplice linguaggio di scripting batch
ps hai valutato l'uso di sistemi di scripting decisamente superiori al
batch?
Io avevo scritto questo vbs per rinominare le foto.
Ma il risultato migliore l'ho avuto usando AutoIt, che permette una finestra di dialogo
con scelta multipla più flessibile (permette l'anteprima).
Nelle pagine del mio sito c'è il sorgente AutoIt e anche il codice compilato.
' *****************************************************
' QuickRename3.vbs
' (c) Cenati Giovanni - http://digilander.libero.it/Cenati
' Scritto il 9 maggio 2007
' Aggiunta la finestra di dialogo per la scelta dei file il 9 agosto 2008
' Codice vbs liberamente utilizzabile citando il sito
' Per modificare il nome dei files
' avviare lo script e scegliere i file dalla finestra di dialogo
' Se il nome fisso inserito è "Test File " (con uno spazio alla fine)
' e il numero dal quale iniziare è 13,
' i files selezionati saranno rinominati, previa conferma,
' in Test "File 013.jpg", "Test File 014.jpg", "Test File 015.jpg", ecc.
' Utilizza una libreria presente in windows xp che purtroppo
' mostra una finestra di dialogo in stile win 3.1 e con i
' nomi dei file in formato 8.3
' *****************************************************
Dim Filenames(1000,2)
Title= "QuickRename3 - by Cenati Giovanni"
Set comDlg=CreateObject("UserAccounts.CommonDialog")
'Imposto alcune costanti che potrò usare nella proprietà FLAGS
const cdlCancel = 32755 'Costante di errore: è stato premuto ANNULLA
const cdlOFNHideReadOnly = 4 'Nasconde la casella "sola lettura"
const cdlOFNAllowMultiselect = 512 'Permette di selezionare più files
const cdlOFNFileMustExist = 4096 'Puoi scegliere solo files esistenti
Const cdlOFNExplorer = 524288 'Finestra in stile win95
'impostazione dei Flag
comDlg.Flags = cdlOFNHideReadOnly + cdlOFNAllowMultiselect + cdlOFNFileMustExist
'Imposto i tipi di files che voglio visualizzare
comDlg.Filter = "Fotografie|*.jpg|Tutti i files|*.*|"
'Imposto la directory che deve essere mostrata
'(altrimenti viene mostrata quella dello script)
comDlg.InitialDir="c:\"
comdlg.FilterIndex = 1
On error resume next
'Mostro la finestra di dialogo "File Apri"
comDlg.ShowOpen
Lista=Split(comDlg.FileName," ")
NumeroFiles=UBound(Lista) 'inizia da zero
If NumeroFiles=-1 Then WScript.Quit 'Premuto annulla
If NumeroFiles=0 Then
Filenames(0,1)=Lista(0)
Else ' unisco il percorso al nome del file
NumeroFiles=NumeroFiles -1 'Perchè lista(0) è la directory.
For i=0 To NumeroFiles
Filenames(i,1)=Lista(0) & Lista(i+1)
'Cioè filenames(0) è nomedir+lista(1)
'e filenames(1) è nomedir+lista(2)
Next
End If
Set fso = CreateObject("Scripting.FileSystemObject")
NomeFisso = inputbox("Inserisci la parte fissa del nome da dare ai files", title)
NumIniziale = inputbox("Inserisci il numero dal quale iniziare la numerazione", title,
"1")
NumIniziale = cint(NumIniziale)
msg="<pre>"
For i=0 To NumeroFiles
'Memorizzo l'estensione del file da rinominare
Estensione = fso.GetExtensionName(Filenames(i,1))
'Memorizzo il percorso del file e ci aggiungo un "\"
Percorso = fso.getparentfoldername(Filenames(i,1)) '& "\"
'Trasformo in stringa "001" il numero che rappresenta il progressivo
Numero = right("000" & NumIniziale,3) 'es: Trasforma 5 in 005
'Costruisce il nuovo filename
Filenames(i,2)= Percorso & "\" & Nomefisso & Numero & "." & Estensione
'Prepara la riga con i due nomi di file.
msg=msg & Filenames(i,1) & " --> " & Filenames(i,2) & vbCrlf
NumIniziale = NumIniziale + 1 'Incrementa il numero progressivo
Next
'*** Crea una finestra che funge da output ***
Set myIE = CreateObject("InternetExplorer.Application")
myIE.Navigate "about:blank"
myIE.ToolBar = False:myIE.StatusBar = False:myIE.Resizable = False
Do
Loop While myIE.Busy
myIE.Width = 900:myIE.Height = 350
myIE.Left = 50:myIE.Top = 50
myIE.Visible = True
myIE.document.writeln("<html><title></title>"&_
"<body bgcolor=antiquewhite><div id='cont'></div></body></html>")
Set IEWindow = myIE.Document.All("cont")
'**********************************************
' Mostra la preview della modifica dei nomi dei files
IEWindow.INNERHTML = msg
risp= msgbox( "Conferma Rinomina dei files?",vbYesno,Title)
If risp=vbno Then MYie.QUIT:wscript.quit
'Se ha risposto si, procede a rinominare i files
For i=0 To NumeroFiles
fso.movefile Filenames(i,1),Filenames(i,2)
Next
MYie.QUIT
wscript.quit
--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--