Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

VBScript e ciclo per file nella cartella

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

VBScript e ciclo per file nella cartella

Postdi Dylan666 » 05/06/13 15:25

Salve a tutti, mi servirebbe aiuto per implementare la seguente operazione in VBScript:

  • Trovare tutti i file con una particolare estensione in una cartella
  • Provare a rinominare tale file
  • Se il file risulta in uso utilizzare un On Erro GoTo per ripartire dall'inizio in modo da rilanciare il comando fino a che il file non è sbloccato
  • Lanciare un tool da linea di comando per fare una certa operazion

Naturalmente io parto male fin dall'inizio! :P
Ho provato a listare TUTTI i file con un codice trovato in Google ma già ho un errore:

Codice: Seleziona tutto
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\TEST"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
    Wscript.Echo objFile.Name
Next


Per il filtro anche ora trovo un codice.
Invece il GoTo pensate sia una soluzione valida o ce ne sono di migliori?

Graze
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Sponsor
 

Re: VBScript e ciclo per file nella cartella

Postdi Dylan666 » 05/06/13 18:31

Per la verifica del file in uso del ciclo precedente ho risolto con questo (dato che il GoTo in VBScript non si può usare):
http://www.xtremevbtalk.com/showthread.php?t=214424

Ora dovrei utilizzare questa riga di comando:
Codice: Seleziona tutto
"C:\Program Files\ImageMagick-6.8.5-Q16\convert.exe" & " " & objStartFolder & "-" & objFile.name & " -crop 0x1600+0+0 " & objStartFolder  & "-" & objFile.name


La dovrei mettere dentro uno Shell.Run
Come si fa per le virgolette?
Datemi una mano perché ci sto perdendo un sacco di tempo... :(
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Re: VBScript e ciclo per file nella cartella

Postdi nerolubo85 » 06/06/13 13:57

Ciao, prova con:
Codice: Seleziona tutto
Dim filepath

filepath="C:\Program Files\ImageMagick-6.8.5-Q16\convert.exe"

Shell.Run """" & filepath & """ " & objStartFolder & .....
nerolubo85
Utente Senior
 
Post: 124
Iscritto il: 04/12/05 11:33

Re: VBScript e ciclo per file nella cartella

Postdi Dylan666 » 06/06/13 17:55

Non dà errore ma è come se non eseguisse il comando (il file non viene modificato).
Mi dai un modo o un comando per vedere esattamente come viene la riga lanciata da Shell dopo aver valorizzato le variabili ecc.?
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Re: VBScript e ciclo per file nella cartella

Postdi Dylan666 » 06/06/13 18:27

Mi manca l'ultimo passetto..

Codice: Seleziona tutto
Prova = """C:\Program Files\ImageMagick-6.8.5-Q16\convert.exe"""
Test = " " & """" & objStartFolder & objFile.name & """" & " -crop 0x1600+0+0 " & """" & objStartFolder & objFile.name & """"
WScript.Echo Prova & Test
Shell.Run Prova & Test


Fino all'Echo tutto OK, e poi sbaglio lo Shell...
Help!!
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Re: VBScript e ciclo per file nella cartella

Postdi nerolubo85 » 06/06/13 20:07

Ciao,

senza conoscere il contenuto di objStartFolder e objFile.name è un po' difficile...
Comunque sei sicuro che il comando sia nella forma giusta? Interpretando quella stringa esce fuori una cosa del genere:
"C:\Program Files\ImageMagick-6.8.5-Q16\convert.exe" "percorso file" -crop 0x1600+0+0 "percorso file".

Secondo me ci sono troppe virgolette. Io farei questa prova:
Codice: Seleziona tutto
Prova = """C:\Program Files\ImageMagick-6.8.5-Q16\convert.exe "
Test = objStartFolder & objFile.name & " -crop 0x1600+0+0 " & objStartFolder & objFile.name & """"
nerolubo85
Utente Senior
 
Post: 124
Iscritto il: 04/12/05 11:33

Re: VBScript e ciclo per file nella cartella

Postdi Dylan666 » 10/06/13 12:52

nerolubo85 ha scritto:senza conoscere il contenuto di objStartFolder e objFile.name è un po' difficile...


Nella prima variabile c'è il percorso al file es c:\temp e nella seconda il nome del file stesso esempio prova.tif

Ho fatto la prova ma non funziona, non ho errori ma nemmeno fa nulla.
Questa stringa invece, lanciata dallo Start > Esegui a mano funziona:

"C:\Program Files\ImageMagick-6.8.5-Q16\convert.exe" "C:\temp\prova.tif" -crop 0x150+0+0 "C:\temp\prova.tif"
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Re: VBScript e ciclo per file nella cartella

Postdi Dylan666 » 10/06/13 13:04

Ho risolto così:

Codice: Seleziona tutto
Prova = Chr(34) & "C:\Program Files\ImageMagick-6.8.5-Q16\convert.exe" & Chr(34)
Test = " " & Chr(34) & objStartFolder & objFile.name & Chr(34) & " -crop 0x150+0+0 " & Chr(34) & objStartFolder & objFile.name & Chr(34)
oShell.Run (Prova & Test)


Probabile che anche alcune (o tutte) le prove precedenti funzionassero, perché mi sono accorto ora che erano vari tentativi che mi ero mangiato la "o" di "oShell.Run" e che quindi il comando non veniva richiamato correttamente :D
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46


Torna a Programmazione


Topic correlati a "VBScript e ciclo per file nella cartella":


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite