Usuário com melhor resposta
Como posso enviar dois parâmetros para para um VBS, ao chama-lo através de um .BAT?

Pergunta
-
Tenho um script que é chamado através de um .BAT que faz a exclusão de arquivos com base em suas datas de modificações, ele exclui todos os arquivos que tem data de modificação anteriores a 30 dias. O comando que utilizo para chama-los é o seguinte:
C:\DelOldFiles_30dias\Deletar30DiasModificacao.vbs "H:\Audios FM - Archive"
onde H:\Audios FM - Archive é o caminho da pasta onde contem os arquivos a serem apagados e suas subpastas eu gostaria de passar mais um parâmetro para tornar este script mais dinamico e atender algumas necessidades da empresa passando também o número de dias ao chamar o .VBS pelo .BAT. O comando seria o seguinte no .BAT:
Por exemplo:
C:\DelOldFiles_30dias\Deletar30DiasModificacao.vbs "H:\Audios FM - Archive" 30
Só não sei como recebo o número de dias no Script a seguir.
-----------------------------------------------------------------------------------------------------------------
Set oArgs = Wscript.Arguments set FSo = CreateObject("Scripting.FileSystemObject") Set strPasta = FSo.GetFolder(oArgs(0)) Set strDias = FSo.GetFolder(oArgs(1)) Apagar_Arquivos(strPasta, strDias) Sub Apagar_Arquivos(Pasta, Dias) set folder = FSO.getFolder (Pasta) set ndias = FSO.getFolder (Dias) on error resume next 'Verifica se tem subpastas if folder.Subfolders.count > 0 then for each SubFolder in folder.Subfolders Apagar_Arquivos SubFolder next end if for each file in folder.files '30 é o número de dias que deve ser recebido por parametro e subistituido pelo vamor de ndias if (dateDiff("d", file.DateLastModified, now) > 30) then File.delete end if next if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then Folder.delete true end if end sub
-----------------------------------------------------------------------------------------------------------------
Desde já agradeço pela ajuda.
- Editado Fábio JrModerator segunda-feira, 12 de agosto de 2013 17:44 formatação do código
Respostas
-
Acho que assim funciona, teve várias alterações, se tiver dúvida é só perguntar
Set oArgs = Wscript.Arguments set FSo = CreateObject("Scripting.FileSystemObject") strPasta = oArgs(0) strDias = oArgs(1) Apagar_Arquivos strPasta, strDias Sub Apagar_Arquivos(Pasta, Dias) set folder = FSO.getFolder (Pasta) on error resume next 'Verifica se tem subpastas if folder.Subfolders.count > 0 then for each SubFolder in folder.Subfolders Apagar_Arquivos SubFolder, Dias next end if for each file in folder.files '30 é o número de dias que deve ser recebido por parametro e subistituido pelo vamor de ndias if cint(dateDiff("d", file.DateLastModified, now)) > cint(Dias) then wscript.echo "entrou" File.delete end if next if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then Folder.delete true end if end sub
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator sexta-feira, 16 de agosto de 2013 02:17
- Marcado como Resposta Fábio JrModerator sexta-feira, 16 de agosto de 2013 02:18
Todas as Respostas
-
Lucas,
Vc precisa receber o parametro e utilizá-lo, metade do trabalho você já fez com a linha:
Set strDias = FSo.GetFolder(oArgs(1))
até aqui strDias vai ter o valor do segundo parâmetro.
Agora precisa usar, altere esta linha:
if (dateDiff("d", file.DateLastModified, now) > 30) then
por esta
if (dateDiff("d", file.DateLastModified, now) > strDias) then
Teste aí e informe se funcionou, eu não testei.
Fábio de Paula Junior
-
-
-
Acho que assim funciona, teve várias alterações, se tiver dúvida é só perguntar
Set oArgs = Wscript.Arguments set FSo = CreateObject("Scripting.FileSystemObject") strPasta = oArgs(0) strDias = oArgs(1) Apagar_Arquivos strPasta, strDias Sub Apagar_Arquivos(Pasta, Dias) set folder = FSO.getFolder (Pasta) on error resume next 'Verifica se tem subpastas if folder.Subfolders.count > 0 then for each SubFolder in folder.Subfolders Apagar_Arquivos SubFolder, Dias next end if for each file in folder.files '30 é o número de dias que deve ser recebido por parametro e subistituido pelo vamor de ndias if cint(dateDiff("d", file.DateLastModified, now)) > cint(Dias) then wscript.echo "entrou" File.delete end if next if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then Folder.delete true end if end sub
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator sexta-feira, 16 de agosto de 2013 02:17
- Marcado como Resposta Fábio JrModerator sexta-feira, 16 de agosto de 2013 02:18