Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[VBS] Ampliamento comando IF

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

[VBS] Ampliamento comando IF

Postdi evvivame » 13/01/16 20:08

Ciao!
Sto usando con successo un script preso da web di cui riporto SOLO il comandi IF che vorrei ampliare:

If file.DateLastModified < newdate Or LCase(file.Name) = "thumbs.db" Then
WScript.Echo "///// Delete file: " & folders.Path & "\" & file.Name & " ultima modifica: " & file.DateLastModified
On Error Resume Next ''Be very careful about this! It masks any error you're getting.
file.Delete True
On Error Goto 0


Il vbs a cui fa riferimento questo comando, come potranno vedere chi conosce il linguaggio, cancella i file con la data di modifica > xx giorni o se il file è "thumbs.db".

E fin qui tutto bene!
La mi esigenza è la seguente:
il comando IF deve trattare le condizioni come specificate ESCLUSO se il file è aa.txt o bb.txt ( nel senso che questi 2 files NON DEVONO ESSERE MAI CANCELLATI)

Esempio da.... ignorante:

If file.DateLastModified < newdate Or LCase(file.Name) = "thumbs.db" And ( LCase(file.Name) <> "aa.txt" or
And LCase(file.Name) <> "bb.txt")
Then......

Per favore mi aiutate ?
Grazie !!!
evvivame
Utente Senior
 
Post: 133
Iscritto il: 19/09/05 20:38

Sponsor
 

Postdi Dylan666 » 14/01/16 00:24

sostituisci l'ultimo OR del tuo esempio con un AND (oppure metti i due elementi dell'ultimo OR tra parentesi tonde)
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi evvivame » 14/01/16 10:01

Mitico !!!!!!!!!!!
Codice: Seleziona tutto
If ((file.DateLastModified < newdate) Or (LCase(file.Name) = "thumbs.db")) And ((LCase(file.Name) <> "aa.txt") and (LCase(file.Name) <> "bb.txt")) Then
Grazie!!!!!
evvivame
Utente Senior
 
Post: 133
Iscritto il: 19/09/05 20:38

Postdi Dylan666 » 14/01/16 13:14

L'altra soluzione era questa

If ((file.DateLastModified < newdate) Or (LCase(file.Name) = "thumbs.db")) And (((LCase(file.Name) <> "aa.txt") OR (LCase(file.Name) <> "bb.txt"))) Then
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi evvivame » 14/01/16 17:52

Dylan666 vai in cerca di rogne :D :D :D :D ??

Mi spiego meglio:
Nel mio primo post proponevo un OR tra aa.txt e bb.txt perchè mi sembrava corretto.
Poi, quando tu mi hai poposto l'AND, visto che funzionava, NON CAPIVO IL PERCHE MA MI ADEGUAVO ..VOLENTIERI !!!

Ora ho provato con la tua ultima stringa con l'OR e ti confermo che non va.

Io chiuderei anche qui ( con l'AND ) MA se tu vuoi lo script completo te lo mando volentieri

Ciaooo e grazie ancora !!!
evvivame
Utente Senior
 
Post: 133
Iscritto il: 19/09/05 20:38

Re: [VBS] Ampliamento comando IF

Postdi Dylan666 » 18/01/16 11:24

Se ho tempo lo riguardo :P
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Re: [VBS] Ampliamento comando IF

Postdi evvivame » 18/01/16 13:54

deloldfiles_v4.vbs:
Codice: Seleziona tutto

' 12.08.2013 Terminato con il contributo di 59Cobalt e testato
'_______________________________________________________________________________

' Objective: To delete old files from a given folder and all subfolders below
'
' Created by: MAK June 21, 2005
'
' Format: cscript deloldfiles.vbs {DriveLetter:\FolderName} {#ofDays}
'     or: cscript deloldfiles.vbs {\\servername\FolderName} {#ofDays}
' Example: cscript deloldfiles.vbs c:\dba\log 3
'    (deletes files older than 3 days from the \dba\log file on drive C

'_______________________________________________________________________________
Set objArgs = WScript.Arguments   
FolderName =objArgs(0)   
Days=objArgs(1)   
set fso = createobject("scripting.filesystemobject")   
set folders = fso.getfolder(FolderName)   
datetoday = now()   
newdate = dateadd("d", Days*-1, datetoday)
wscript.echo "--> Today:" & now()
wscript.echo "--> Variabil days=" & days   
wscript.echo "          Check files older than:" & newdate 
wscript.echo "          ==========================================" 
wscript.echo ""
wscript.echo ""
wscript.echo "          Beginning of check files older than:" & newdate
wscript.echo "          ========================================================"   
recurse folders   
sub recurse( byref folders)   
set subfolders = folders.subfolders   
set files = folders.files   
wscript.echo "" 
wscript.echo "Check files older in folder:" & folders.path 
wscript.echo "=========================================================" 
 
for each file in files   

If ((file.DateLastModified < newdate) Or (LCase(file.Name) = "thumbs.db")) And ((LCase(file.Name) <> "aa.txt") and (LCase(file.Name) <> "bb.txt")) Then
  WScript.Echo "///// Delete file: "  & folders.Path & "\" & file.Name & " ultima modifica: " & file.DateLastModified
  On Error Resume Next  ''Be very careful about this! It masks any error you're getting.
   file.Delete True
  On Error Goto 0
End If   
next 
 for each folder in subfolders 
  recurse folder 
  If folder.Files.Count = 0 And folder.SubFolders.Count = 0 Then 
    folder.Delete
    wscript.echo "----- Deleted folder:" & folders.path
  End If 
Next
 
 set subfolders = nothing   
set files = nothing   
end sub
 wscript.echo ""
 wscript.echo "          End of check files older than:" & newdate
 wscript.echo "          ================================================="


mentre il suo lancio, per esempio, è questo:
Codice: Seleziona tutto
cscript "d:\dropbox\trace\deloldfiles_v4.vbs" "E:\My Backups\C" 65 >> "D:\Dropbox\Trace\clean.log"


Ripeto, per me, il tema è chiuso
Cioaoo
evvivame
Utente Senior
 
Post: 133
Iscritto il: 19/09/05 20:38


Torna a Programmazione


Topic correlati a "[VBS] Ampliamento comando IF":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti