Usuário com melhor resposta
Scripts para Mover arquivos de Pastas

Pergunta
-
Bom Dia!
Estou com uma duvida para fazer um Script, preciso fazer uma tarefa aqui no trabalho para mover alguns arquivos de uma pasta do Windows para algumas pastas em outro servidor. Por exemplo, eu tenho uma pasta chamada $\entrada dentro dela irão chegar alguns arquivos com os nomes teste1.xxx, teste2.xxx e teste3.xxx, preciso mover desta pasta $\entrada para outro servidor nas pasta respectivas \\servidor1\teste1.xxx, \\servidor1\teste2.xxx e \\servidor1\teste3.xxx.
Se alguém tiver uma dica de como fazer essas condicionais.
Obrigado.
Rodrigo
Respostas
-
Com Bat vc pode usar o FORFILES
SET ORIGEM=c:\temp SET DESTINO_1=c:\temp\1 SET DESTINO_2=c:\temp\2 :: copia 1 forfiles /P "%ORIGEM%" /M *1.xxx /c "cmd /c move @path %DESTINO_1%" :: copia 2 forfiles /P "%ORIGEM%" /M *2.xxx /c "cmd /c move @path %DESTINO_2%"
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator quarta-feira, 18 de setembro de 2013 23:41
- Marcado como Resposta Fábio JrModerator domingo, 22 de setembro de 2013 16:55
Todas as Respostas
-
Rodrigo,
Bem confuso esse exemplo seu...
Mas o que deu pra entender é o que tem 1 no nome vai pro compartilhamento 1, o que tem 2 vai pro compartilhamento 2, e assim sucessivamente. Segue script em PowerShell
#Pasta Entrada $Pasta_Entrada="c:\temp" #Shares $Share_1="C:\temp\1" $Share_1="C:\temp\2" $Share_1="C:\temp\3" #Move os arquivos "1" para o copartilhamento 1 ls $Pasta_Entrada -Filter "*1.xxx" | Move-item -force -Destination $Share_1 #Move os arquivos "2" para o copartilhamento 2 ls $Pasta_Entrada -Filter "*2.xxx" | Move-item -force -Destination $Share_2 #Move os arquivos "3" para o copartilhamento 3 ls $Pasta_Entrada -Filter "*3.xxx" | Move-item -force -Destination $Share_3
Fábio de Paula Junior
-
Fábio,
Realmente ficou mal explicado, desculpa.
O que você descreveu é isso mesmo que eu preciso, porem a solicitação aqui é que fosse uma bat.
A ideia é essa mesmo:
Pasta de Origem:
c:\arquivos_de_entrada
Arquivos dentro delas:
teste1*.xxx
teste2*.xxx
teste3*.xxx
Pasta de destino:
(pasta arquivo é a compartilhada)
\\servidor\arquivos\teste1
\\servidor\arquivos\teste2
\\servidor\arquivos\teste3
O ideia é fazer uma leitura no nome do arquivo e encaminhar para sua pasta de destino correta.
É possível fazer isso com uma Bat no Windows, pensei em usar também o Robocopy , porem não achei os parâmetros exatos.
Obrigado.
Rodrigo
-
Com Bat vc pode usar o FORFILES
SET ORIGEM=c:\temp SET DESTINO_1=c:\temp\1 SET DESTINO_2=c:\temp\2 :: copia 1 forfiles /P "%ORIGEM%" /M *1.xxx /c "cmd /c move @path %DESTINO_1%" :: copia 2 forfiles /P "%ORIGEM%" /M *2.xxx /c "cmd /c move @path %DESTINO_2%"
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator quarta-feira, 18 de setembro de 2013 23:41
- Marcado como Resposta Fábio JrModerator domingo, 22 de setembro de 2013 16:55
-
Com Bat vc pode usar o FORFILES
SET ORIGEM=c:\temp SET DESTINO_1=c:\temp\1 SET DESTINO_2=c:\temp\2 :: copia 1 forfiles /P "%ORIGEM%" /M *1.xxx /c "cmd /c move @path %DESTINO_1%" :: copia 2 forfiles /P "%ORIGEM%" /M *2.xxx /c "cmd /c move @path %DESTINO_2%"
Fábio de Paula Junior
-
Fábio, me ajudou bastante este script!
Na minha situação, preciso também deletar os arquivos com mais de 30 dias. Tenho o trecho abaixo, só que ele utiliza a data de modificação, não de criação, tem algum outro jeito?
forfiles -p %ORIGEM% -s -d -30 -m *.bak -c "cmd /c del /f /q @path"
Se eu mover este arquivo para outra pasta ele já não o identifica com os parâmetros acima, mesmo o arquivo tendo +30 dias.
--------------------------
Rafael Maciel
- Editado RafaelPMaciel segunda-feira, 14 de março de 2016 20:39 novo argumento