locked
Script para Verificar Arquivos RRS feed

  • Pergunta



  • Preciso de um Script .vbs

    Dentro da pasta HORAS esta os arquivos:

    paulo.doc
    pedro.doc
    angelo.doc
    romario.doc

    Preciso que ele faca um for para cada arquivo que tem,essa pasta geralmente é alterada periodicamente adicionando mais arquivos com nomes dos usuarios da minha empresa...

    O Script Deveria Funcionar asssim: (EU NAO ENTENDO NADA DE VB vo tentar explicar minha logica)

    para c:\HORAS file

         cacls NOMEDOARQUIVO.doc /e /p   nomedoarquivo -----> sendo que nomedoarquivo.doc(tirando o -doc)  é = ao HOSTNAME do pc local


    Passando para portugues

    Quando eu abrir o vbs ele deve liberar o arquivo angelo.doc somente para o usuario angelo.... o arquivo romario.doc somente para o usuario romario
    sexta-feira, 26 de outubro de 2007 16:43

Respostas

  • Angelo segue o script que precisa, testei e funcionou Wink

     

    dim usuarios()
    dim extensoes()
    i = 0
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
     ("SELECT * FROM CIM_Datafile where path = '\\pasta\\'")
    For Each objFile in colFiles
     ReDim Preserve usuarios(i)
     ReDim Preserve extensoes(i)
     usuarios(i) = objfile.filename
     extensoes(i) = objfile.extension
     i = i + 1
    Next

    t= i -1
    Set WshShell=CreateObject("Wscript.Shell")
    for i = 0 to t
    WshShell.Run "cscript xcacls.vbs caminho da pasta\" & usuarios(i) & "." & extensoes(i) & " /t /G seudominio\" & usuarios(i) & ":F"
    next

     só outra coisa, você precisa ter o arquivo.xcacls.vbs junto de onde está o script rodando, você acha ele nesse link aqui:
    • Sugerido como Resposta Fábio Jr quinta-feira, 29 de novembro de 2012 16:48
    • Marcado como Resposta Enderson Valente quinta-feira, 29 de novembro de 2012 17:06
    sexta-feira, 26 de outubro de 2007 19:45

Todas as Respostas

  • Angelo, primeiro abra tópicos de script na parte de script

     

    segundo segue o script que você precisa

     

    Set objNetwork = WScript.CreateObject("WScript.Network")
    strUserName = objNetwork.UserName

    Set WshShell=CreateObject("Wscript.Shell")
    WshShell.Run "cacls .\" & strUserName & ".* /T /G seu dominio\" & strUserName & ":F"

     

    ps: tente colocar o script no logon do usuário, pois assim o usuário quando logar na máquina só vai ter acesso ao seus arquivos Wink

     

    sexta-feira, 26 de outubro de 2007 16:49


  • Cara

    desculpe pelo erro de botar na parte errada o script ... sou novato mesmo...

    Esse seu script acho q melhorou ... da logica do otro


    mas seguinte outra coisa nao entendi pq vc botou /t /g se as permissoes que dou sao cm /e /p

    outra coisa eu fiz aqui editei trokei o dominio para o nome da minha empresa e deixe o resto como tava....

    e por exemplo o arquivo bvargas.xls
    continua sem permissao para o bvargas


    sexta-feira, 26 de outubro de 2007 16:54
  • mas você está logado com o usuário bvargas? esse script pega o usuário atual e coloca a devida permissão para os arquivos dele Wink, mas acho que vai ser melhor pegar todos os nomes dos filenames e jogar as devidas permissões

    sexta-feira, 26 de outubro de 2007 17:14


  • estou como arecaman mas mesmo assim nao deu.... mas andei olhando e meio que fiz um e esse vai dar certo....


     set objFSO = Wscript.CreateObject("Scripting.FilesystemObject")
     set objFolder = objFSO.Getfolder("C:\Documents and Settings\arecaman\Desktop\horas extra cacls")
       for each objFile in objFolder.Files
          Set WshShell=CreateObject("Wscript.Shell")
          WshShell.Run "cacls objFile.Name /e /p voiza\" & objFile.name & ":F"
       next



    estou fazendo assim ... ele so nao esta funcioando ........ pq ali no ultimo OBJFILE.NAME ele ta pegando o nomedoarquivo.xls


    eu queria saber oq eu preicos alterar nesse pra ele cortar o .XLS somente naquele ultimo OBJFILE.NAME (QUE REPRESENTA O USUARIO)  PQ ELE TA LENDO COMO SE FOSSE voiza\bvargas.xls e eu preciso de voiza\bvargas

    Termina de Me ajuda que fecho os post como tua resposta concreta abraco
    sexta-feira, 26 de outubro de 2007 17:23
  • set objFSO = Wscript.CreateObject("Scripting.FilesystemObject")
     set objFolder = objFSO.Getfolder("C:\Documents and Settings\arecaman\Desktop\horas extra cacls")
     
       for each objFile in objFolder.Files
          username = Replace(objFile.Name, ".xls", "")
          Set WshShell=CreateObject("Wscript.Shell")
          WshShell.Run "cacls objFile.Name /e /p voiza\username:F"
       next


    Bah ainda modifiquei mais uma linha mas ainda assim continua sem funcionar SadSadSad

    botei a variavel username pra cortar o .xls que ele pega dos arquivos dentro da pasta

    por exemplo bvargas.xls se transformara em bvargas.... mas mesmo assim nao funciona.... como nunca vi vb na vida.... to levando um pau espero que me ajudem o mais rapido possivel




    sexta-feira, 26 de outubro de 2007 18:20
  • Angelo segue o script que precisa, testei e funcionou Wink

     

    dim usuarios()
    dim extensoes()
    i = 0
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
     ("SELECT * FROM CIM_Datafile where path = '\\pasta\\'")
    For Each objFile in colFiles
     ReDim Preserve usuarios(i)
     ReDim Preserve extensoes(i)
     usuarios(i) = objfile.filename
     extensoes(i) = objfile.extension
     i = i + 1
    Next

    t= i -1
    Set WshShell=CreateObject("Wscript.Shell")
    for i = 0 to t
    WshShell.Run "cscript xcacls.vbs caminho da pasta\" & usuarios(i) & "." & extensoes(i) & " /t /G seudominio\" & usuarios(i) & ":F"
    next

     só outra coisa, você precisa ter o arquivo.xcacls.vbs junto de onde está o script rodando, você acha ele nesse link aqui:
    • Sugerido como Resposta Fábio Jr quinta-feira, 29 de novembro de 2012 16:48
    • Marcado como Resposta Enderson Valente quinta-feira, 29 de novembro de 2012 17:06
    sexta-feira, 26 de outubro de 2007 19:45
  • Moderação,

    tópico respondido.


    Fábio de Paula Junior

    quinta-feira, 29 de novembro de 2012 16:48