none
script para verificar so RRS feed

  • Pergunta

  • Olá,

    Procurei aki no forum achei algo parecido mas não necessariamente o que preciso.

    Veja bem possuo uma estrutura com o Windows 2k8 e maquinas clientes com o XP e windows 7.

    No windows XP ta tudo blz, mas o windows 7 preciso copiar uma pasta de relatorios para o C:.

    Ou seja, preciso de um script que antes de executar verifica a versao do meu SO e em seguida copie essa pasta para o meu C:, e que essa copia seja incremental, ou seja, só copie se houver alteração ou se não existir.

    Peço que sejam detalhados caso me ajudem pq não sou muito familiarizado com scripts vbs e nem tampouco sua linguagem, e eu gosto de entender para que assim caso aconteça algo semelhante eu consiga resolver.

    obrigado a todos.

    sexta-feira, 26 de outubro de 2012 18:52

Respostas

  • Cara eu uma vez fiz isso apenas com um .bat
    Coloquei assim:

    if exist \\%nomedocomputador\c$\Users (

    )

    Como no WinXP essa pasta não existe (pois é a Documents and Settings), ele funcionou perfeitamente nas que estavam com o Windows 7.

    Talvez esta não seja a melhor forma, mas funcionou pra mim.
    Espero que te ajude.

    Abs.


    Att, Paulo Rocha

    sexta-feira, 26 de outubro de 2012 20:40
  • Fernando,

    Vc tem que ter um "marco", se  a pasta "C:\Pasta" existe significa que vc já fez o procedimento anteriormente? Então isso resolveria (testar se C:\Pasta existe, se não existir executa o procedimento):

    IF not EXIST C:\Pasta (
    	if exist c:\Users (
    		echo Micro com Windows 7
    		copy /y "\\ip\compartilhamento\pasta\" C:/Pasta
    		copy /y C:/Pasta/Executável.exe "%userprofile%\desktop\Executavel.lnk"(Fazendo um atalho de um executável dentro da pasta copiada para o desktop)
    		rd /s /q c:\$Recycle.bin (as lixeiras com o windows 7 do dominio tão dando pau)
    		rd /s /q d:\$Recycle.bin
    	)
    )


    Fábio de Paula Junior



    quarta-feira, 31 de outubro de 2012 15:14
    Moderador
  • Fera,

    Tem alguns equivocos neste ultimo que vc passou:

    - Tem um (Versao em portugues) sobrando em uma linha

    - Uma barra fora de "esquadro" no primeiro copy, o correto é C:\Esquadro, veja que está C:"/"Esquadro

    Qualquer coisa rode o script (não dê dois clicks nele, execute de dentro de um prompt de comando) e coloque a saida que apareceu no prompt aqui. Tire um print, o fórum tem recurso para colar imagens.

    Indique também o que não funcionou, como estava o ambiente, tinha a pasta? apagou o Recycle, só não copiou o Esquadro...


    Fábio de Paula Junior

    quarta-feira, 31 de outubro de 2012 15:41
    Moderador
  • Vi outro erro... Tem que ter espaço entre o nome da pasta e a "(", senão não funciona:

    Testei este código e funciona:

    IF not EXIST C:\Pasta (
    	if exist c:\Users (
    		echo Micro com Windows 7
    	)
    )

    Veja o espaço depois do nome da pasta!

    Se precisar de mais ajuda vou precisar que me mostre os exames (a saída do script na tela) não dá só pra ouvir o paciente dizer que está doendo. :-)


    Fábio de Paula Junior

    quarta-feira, 31 de outubro de 2012 22:55
    Moderador
  • Da forma que o Fábio informou irá funcionar. Sempre é necessário ter um espaço antes do "(".
    Obs: Mesmo que esteja com a versão em português, utilize o 'if exist c:\users' e não 'usuários', pois este é somente um alias e não é reconhecido pelo DOS.


    Att, Paulo Rocha

    quinta-feira, 1 de novembro de 2012 12:53

Todas as Respostas

  • Cara eu uma vez fiz isso apenas com um .bat
    Coloquei assim:

    if exist \\%nomedocomputador\c$\Users (

    )

    Como no WinXP essa pasta não existe (pois é a Documents and Settings), ele funcionou perfeitamente nas que estavam com o Windows 7.

    Talvez esta não seja a melhor forma, mas funcionou pra mim.
    Espero que te ajude.

    Abs.


    Att, Paulo Rocha

    sexta-feira, 26 de outubro de 2012 20:40
  • Outra coisa,
    Para efetuar essa cópia, utilize o comando ROBOCOPY.
    Consulte a documentação.

    Att, Paulo Rocha

    sexta-feira, 26 de outubro de 2012 20:41
  • Paulo nao tem como ser no user pq a pasta vai pro C:/

    e o robocopy roda tanto em xp qd em 7 entao preciso fazer a validação do windows antes. Ja utilizo o richcopy

    Mais alguem?

    sábado, 27 de outubro de 2012 12:40
  • Fernando,

    A resposta do Paulo faz sentido, ele considera que caso exista a pasta C:\Users se trata de um micro com Windows 7. Então se vc quer verificar (o exemplo é um .BAT) se o micro tem Windows 7 e fazer uma cópia neste caso então vc pode usar o código:

    if exist c:\Users (
    echo Micro com Windows 7, faça sua copia como richcopy
    echo richcopy ....
    )

    Ele também propôs o uso do Robocopy porque você queria uma cópia incremental e o Robocopy faz isso. Porém o robocopy não é instalado no Windows XP por default, vc teria que copiar o robocopy (acho que ele vem no resource kit) para as máquinas com Windows XP (eu costumo copiar para %systemroot%\system32.

    Veja outra maneira de verificar o SO no link abaixo (utilizando o comando VER)

    Script para Instalar Hotfix Horario de Verão 2012/2013 

    social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/0c775361-dec5-482d-b261-0e020bc0d859



    Fábio de Paula Junior

    sábado, 27 de outubro de 2012 19:32
    Moderador
  • Ah sim,

    Agora entendi o conceito...

    No caso mesmo que não seja uma cópia incremental seja somente uma cópia única ficaria assim?

    if exist c:\Users(

    echo Micro com Windows 7

    copy /y "\\ip\compartilhamento\pasta\" C:/Pasta

    copy /y C:/Pasta/Executável.exe "%userprofile%\desktop\Executavel.lnk"(Fazendo um atalho de um executável dentro da pasta copiada para o desktop)

    rd /s /q c:\$Recycle.bin (as lixeiras com o windows 7 do dominio tão dando pau)

    rd /s /q d:\$Recycle.bin

    )

    Esse script estaria correto?

    Se sim como fazer para que ele execute apenas no primeiro login para que não copie sempre?

    quarta-feira, 31 de outubro de 2012 15:05
  • Fernando,

    Vc tem que ter um "marco", se  a pasta "C:\Pasta" existe significa que vc já fez o procedimento anteriormente? Então isso resolveria (testar se C:\Pasta existe, se não existir executa o procedimento):

    IF not EXIST C:\Pasta (
    	if exist c:\Users (
    		echo Micro com Windows 7
    		copy /y "\\ip\compartilhamento\pasta\" C:/Pasta
    		copy /y C:/Pasta/Executável.exe "%userprofile%\desktop\Executavel.lnk"(Fazendo um atalho de um executável dentro da pasta copiada para o desktop)
    		rd /s /q c:\$Recycle.bin (as lixeiras com o windows 7 do dominio tão dando pau)
    		rd /s /q d:\$Recycle.bin
    	)
    )


    Fábio de Paula Junior



    quarta-feira, 31 de outubro de 2012 15:14
    Moderador
  • if not exist C:\Pasta(

    if exist "C:\Usuários"(Versao em portugues)(
            echo Micro com Windows 7
            copy /y "\\172.16.0.2\compartilhamento\teste\*" "C:/Esquadro"
            copy /y "C:/Esquadro/EsquadroSec.exe" "%userprofile%\desktop\Esquadro.lnk"
            rd /s /q c:\$Recycle.bin
            rd /s /q d:\$Recycle.bin

        )

    )

    Não funfou, tem como ir pausando paramentro por paramentro para ver onde está ocorrendo o erro?

    quarta-feira, 31 de outubro de 2012 15:35
  • Fera,

    Tem alguns equivocos neste ultimo que vc passou:

    - Tem um (Versao em portugues) sobrando em uma linha

    - Uma barra fora de "esquadro" no primeiro copy, o correto é C:\Esquadro, veja que está C:"/"Esquadro

    Qualquer coisa rode o script (não dê dois clicks nele, execute de dentro de um prompt de comando) e coloque a saida que apareceu no prompt aqui. Tire um print, o fórum tem recurso para colar imagens.

    Indique também o que não funcionou, como estava o ambiente, tinha a pasta? apagou o Recycle, só não copiou o Esquadro...


    Fábio de Paula Junior

    quarta-feira, 31 de outubro de 2012 15:41
    Moderador
  • Mais uma, não utilize C:\Usuários, utilize C:\Users, mesmo sendo em português ele vai encontrar C:\Users, faça um teste vc mesmo: Digite no windows explorer C:\users e veja que ele abre o C:\Usuários.

    Usar nomes com acentos pode atrapalhar.


    Fábio de Paula Junior

    quarta-feira, 31 de outubro de 2012 15:44
    Moderador
  • A questão dos parenteses coloquei so como explicação ali no post o do pq ser C:\usuários invés de ser C:users

    Cara o erro ta na verificação nesse if porque digo isso:

    quando rodo o script sem nenhum if ele roda normal, copia tudo que peço, porém se coloco qualquer um dos dois if's seja o if exist "C:\Usuários" ou "if not exist C:\Esquadro".

    Script que da certo:

    mkdir "C:\Esquadro"
    xcopy /D /S "\\172.16.0.2\compartilhamento\teste" "C:\Esquadro"
    rd /s /q c:/$Recycle.bin
      



    Script que não roda:

    if not exist "C:\Esquadro"(
    echo Micro com Windows 7 
    mkdir "C:\Esquadro"
    xcopy /D /S "\\172.16.0.2\compartilhamento\teste" "C:\Esquadro"
    rd /s /q c:/$Recycle.bin
    )


    ou

    if exist "C:\Usuários"(
    
    if not exist "C:\Esquadro"(
    echo Micro com Windows 7 
    mkdir "C:\Esquadro"
    xcopy /D /S "\\172.16.0.2\compartilhamento\teste" "C:\Esquadro"
    rd /s /q c:/$Recycle.bin
        )
    
    )


    ou

    if not exist "C:\Esquadro"(
    
    if exist "C:\Usuários"(
    
    echo Micro com Windows 7 
    mkdir "C:\Esquadro"
    xcopy /D /S "\\172.16.0.2\compartilhamento\teste" "C:\Esquadro"
    rd /s /q c:/$Recycle.bin
       ) 
    )



    quarta-feira, 31 de outubro de 2012 16:33
  • Cara coloquei o GOTO logo depois do if e continua dando o erro.
    quarta-feira, 31 de outubro de 2012 16:42
  • Vi outro erro... Tem que ter espaço entre o nome da pasta e a "(", senão não funciona:

    Testei este código e funciona:

    IF not EXIST C:\Pasta (
    	if exist c:\Users (
    		echo Micro com Windows 7
    	)
    )

    Veja o espaço depois do nome da pasta!

    Se precisar de mais ajuda vou precisar que me mostre os exames (a saída do script na tela) não dá só pra ouvir o paciente dizer que está doendo. :-)


    Fábio de Paula Junior

    quarta-feira, 31 de outubro de 2012 22:55
    Moderador
  • Da forma que o Fábio informou irá funcionar. Sempre é necessário ter um espaço antes do "(".
    Obs: Mesmo que esteja com a versão em português, utilize o 'if exist c:\users' e não 'usuários', pois este é somente um alias e não é reconhecido pelo DOS.


    Att, Paulo Rocha

    quinta-feira, 1 de novembro de 2012 12:53