Discussione:
L'incremento nel ciclo di for
(troppo vecchio per rispondere)
Fede5815
2010-11-17 12:47:21 UTC
Permalink
Ho una serie di file batch denominati Axxx primoAutore.bat - Axxx
secondoAutore.bat - Axxx terzoAutore.bat - ecc.

Dovrei cambiare xxx in un numero incrementale tipo A100 primoAutore.bat
A101 secondoAutore.bat A103 terzoAutore.bat

Cose tipo for/L %%i (100,1,200) Do ren "Axxx *.bat" "A%%i *.bat" non sono
adatte allo scopo ......
unknown
2010-11-17 16:35:38 UTC
Permalink
"Fede5815"
Post by Fede5815
Dovrei cambiare xxx in un numero incrementale tipo A100 primoAutore.bat
A101 secondoAutore.bat A103 terzoAutore.bat
l'operatore di incremento è un singolo "+"

esempio:

@echo off
::== questo è un test d'incremento
rem instanzio la variabile gatto a 1
set /A Gatto=1
rem stampo la variabile gatto return 1
echo %Gatto%
rem incremento la variabile gatto 1+1
set /A Gatto+=1
rem stampo l'intero incrementato return 2
echo %Gatto%
::== fine del test d'incremento

ciò 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?


Cordiali saluti

R. C.
Cossato - Biella
=======================================================================
My pgp key http://pgp.mit.edu:11371/pks/lookup?search=0x86FE80BB&op=index
Fingerprint: 8FC8 05DE 2B53 A8AF 8B2B 6CBF AD23 C4D5 86FE 80BB
=======================================================================
Fede5815
2010-11-17 18:08:33 UTC
Permalink
No, ti ringrazio, per adesso mi limito al batch, a meno che non ne abbia
veramente necessita'...cmq l'idea in se' non mi dispiace....
Per il mio problema mi basavo su una sintassi che funziona, tipo:

for /L %i IN (40,1,100) DO md cartella_%i

che uso per creare cartelle numerate da 40 a 100 con incremento di 1.

supponevo si potesse modificare il codice per rinominare progressivamente
una serie di file....
ho fatto tentativi con for, sempre con effetti diversi, ma mai con quello
giusto :-(

In ogni caso se non lo si può fare direttamente, provo a inventarmi qualche
altra cosa tipo un file di testo con la serie di A100, A101 ecc e un batch
che in qualche modo prelevi le sigle e le attacchi ai nomi degli autori,
dato che ciascun nome viene identificato da una sigla Axxx ,nella forma Axxx
Autore1.bat, Axx Autore2.bat.ecc
Non so nemmeno se lo sapro' fare, pero' potrebbe essere una via d'uscita....

Ti ringrazio per la spiegazione dell'incremento, mi sara' utile.





"R. C." <WriteMeFromTheSite#CorradoRoberto.it> ha scritto nel
Post by unknown
"Fede5815"
Post by Fede5815
Dovrei cambiare xxx in un numero incrementale tipo A100 primoAutore.bat
A101 secondoAutore.bat A103 terzoAutore.bat
l'operatore di incremento è un singolo "+"
@echo off
::== questo è un test d'incremento
rem instanzio la variabile gatto a 1
set /A Gatto=1
rem stampo la variabile gatto return 1
echo %Gatto%
rem incremento la variabile gatto 1+1
set /A Gatto+=1
rem stampo l'intero incrementato return 2
echo %Gatto%
::== fine del test d'incremento
ciò 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?
Cordiali saluti
R. C.
Cossato - Biella
=======================================================================
My pgp key http://pgp.mit.edu:11371/pks/lookup?search=0x86FE80BB&op=index
Fingerprint: 8FC8 05DE 2B53 A8AF 8B2B 6CBF AD23 C4D5 86FE 80BB
=======================================================================
Reventlov
2010-11-19 22:07:14 UTC
Permalink
Il giorno Wed, 17 Nov 2010 17:35:38 +0100, "R. C."
Post by unknown
ciò 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)
--
Continua a leggere su narkive:
Loading...