none
Identificação de Dia específico no mês RRS feed

  • Pergunta

  • Srs, preciso fazer um script para me retornar qual dia da semana NO mês estamos, por exemplo.

    Segunda1, Segunda2 e assim por diante.

    Ja consegui criar minha rotina de backup usando o script abaixo, mas estou com uma certa dificuldade em identificar certo o numero do dia dentro do mes, um exemplo é esta segunda que para meu backup é a SEGUNDA_3, mas para o LocalTime é uma SEGUNDA da semana 4, então meu script concatena e fica SEGUNDA_4 quando deveria ser SEGUNDA_3

    Estou usando isso atualmente:

    strcomputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")
    For Each objItem in colItems
     strWeekInMonth = objItem.WeekInMonth -1
    ' strWeekInMonth = objItem.Quarter
     strDayOfWeek = objItem.DayOfWeek
    Next
    Select Case strDayOfWeek
    Case 0
    strDayName = "Domingo"
    Case 1
    strDayName = "Segunda"
    Case 2
    strDayName = "Terça"
    Case 3
    strDayName = "Quarta"
    Case 4
    strDayName = "Quinta"
    Case 5
    strDayName = "Sexta"
    Case 6
    strDayName = "Sábado"
    End Select

    'wscript.echo "Dia da semana = " & strDayName
    'wscript.echo "Semana = " & strWeekInMonth
    'wscript.echo TapeName
    TapeName = strDayName & "_" & strWeekInMonth

    strDeallocate = "rsm deallocate /lF"&TapeName
    strCMD ="ntbackup.exe backup " & chr(34) & "@C:\BackupConfig\BackupDiario.bks" & chr(34) & " /n " & chr(34) & TapeName & chr(34) & " /d " & chr(34) & TapeName & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & TapeName & chr(34) & " /l:f /p " & chr(34) & "LTO Ultrium" & chr(34) & " /um "
    strEject = "rsm eject /pf" & chr(34) & TapeName &" - 1" & chr(34) & " /astart"
    wscript.echo strDeallocate
    'wscript.echo strEject
    wscript.echo strCMD

    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WSHShell.Run strDeallocate , 1, true
    WSHShell.Run strCMD , 1, true
    WSHShell.Run strEject , 1, false

     

    Coloquei um -1 em (strWeekInMonth = objItem.WeekInMonth -1) só para quebrar o galho hoje.

    Alquem pode ajudar numa solução definitiva?

     

    segunda-feira, 18 de abril de 2011 14:55

Respostas

  • RESOLVIDO: um pequeno IF matou a charada

    Com isso ele coloca o nome certo nas fitas.

     

    strcomputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")

    For Each objItem in colItems
     strWeekInMonth  = objItem.WeekInMonth
    ' strWeekInMonth  = objItem.Quarter
     strDayOfWeek  = objItem.DayOfWeek
     strDay  = objItem.Day
    Next
    Select Case strDayOfWeek
    Case 0
    strDayName = "Domingo"
    Case 1
    strDayName = "Segunda"
    Case 2
    strDayName = "Terça"
    Case 3
    strDayName = "Quarta"
    Case 4
    strDayName = "Quinta"
    Case 5
    strDayName = "Sexta"
    Case 6
    strDayName = "Sábado"
    End Select

    if strWeekInMonth*7 > strDay then
     strWeekInMonth = strWeekInMonth-1
    end if

    TapeName = strDayName & "_" & strWeekInMonth
    strDeallocate = "rsm deallocate /lF"&TapeName
    strCMD ="ntbackup.exe backup " & chr(34) & "@C:\BackupConfig\BackupDiario.bks" & chr(34) & " /n " & chr(34) & TapeName & chr(34) & " /d " & chr(34) & TapeName & chr(34) & " /v:no /r:no /rs:no /hc:on /m normal /j " & chr(34) & TapeName & chr(34) & " /l:f /p " & chr(34) & "LTO Ultrium" & chr(34) & " /um "
    strEject = "rsm eject /pf" & chr(34) & TapeName &" - 1" & chr(34) & " /astart"
    'wscript.echo strDeallocate
    'wscript.echo strEject
    'wscript.echo strCMD
    'wscript.echo "Dia da semana = " & strDayName
    'wscript.echo "Semana = " & strWeekInMonth
    'wscript.echo TapeName

    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WSHShell.Run strDeallocate , 1, true
    WSHShell.Run strCMD , 1, true
    WSHShell.Run strEject , 1, false

    terça-feira, 19 de abril de 2011 22:48