locked
Fechar arquivos abertos RRS feed

  • Pergunta

  • Boa noite Colegas

     

    Estou precisando fechar todos os arquivos abertos, na verdadegostaria de automatizar esta tarefa e colocar no agendador do windows para que todo dia a noite ele de um comando para fechar todos os arquivos abertos.

    Alguem ja fez isto?  ou conhece um script que faça isso??

    Qualquer ajuda é bem vinda

    Obrigado

    Sem mais

     

    Paulo

     

    segunda-feira, 14 de agosto de 2006 23:53

Respostas

  • Oi Paulo,

    eu tentaria isto, mas iria perder os dados não salvos...

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process")

    Set colComputer = objWMIService.ExecQuery _
        ("Select * from Win32_ComputerSystem")

     For Each objComputer in colComputer
        texto = objComputer.UserName
     Next


    For Each objProcess in colProcessList
        colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
        texto2 = strUserDomain & "\" & strNameOfUser 
        If texto2 = texto Then
           objProcess.Terminate()
        End If
    Next

    quarta-feira, 16 de agosto de 2006 16:01

Todas as Respostas

  • O problema é realmente fechar ponteiros pra arquivos que ficaram abertos no SO (impedindo um backup, por exemplo) ou é só fechar uns programinhas que possam estar abertos eventualmente?

    []s,

    --
    Vinicius Canto <scripterbratgmaildotcom>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com

    terça-feira, 15 de agosto de 2006 04:24
    Moderador
  • Na verdade o que eu preciso é fechar arquivos que eventualmente ficaram pendurados por algum usuário, por algum motivo.

     

    Será que é possível??

     

    Abraços

     

     

    Paulo

    terça-feira, 15 de agosto de 2006 13:35
  • Oi Paulo,

    eu tentaria isto, mas iria perder os dados não salvos...

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process")

    Set colComputer = objWMIService.ExecQuery _
        ("Select * from Win32_ComputerSystem")

     For Each objComputer in colComputer
        texto = objComputer.UserName
     Next


    For Each objProcess in colProcessList
        colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
        texto2 = strUserDomain & "\" & strNameOfUser 
        If texto2 = texto Then
           objProcess.Terminate()
        End If
    Next

    quarta-feira, 16 de agosto de 2006 16:01
  • blz

    Carlos

     

    Vou testar aqui.. mas é isso mesmo que preciso

     

    dai posto aqui..

     

    Obrigado

     

    Atenciosamente

     

    Paulo

     

     

     

    quarta-feira, 16 de agosto de 2006 20:02
  • Legal Paulo,

    se precisar de mais algum ajuste é só avisar.

    quarta-feira, 16 de agosto de 2006 20:12
  • Caro vinicius

    Estou com problema parecido no win 2003 server std, mesmo fazendo os backups a noite, quando não tem nenhum usuários conectado, alguns arquivos aparecem no log do backup com problemas de error size e checksum, ambos decorrentes de ficarem com os ponteiros abertos.

    Posso utilizar o mesmo script que vc postou ou derei que usar outro para fechar estes ponteiros ?????

     

     

     

     

    quarta-feira, 6 de dezembro de 2006 13:28