Ir ao conteúdo
  • Cadastre-se

Bat script PowerShell para pesquisa de arquivo movimentação e criação de pasta


Ir à solução Resolvido por Swalls,

Posts recomendados

Prezados,
Gostaria de pedir a colaboração de você para desenvolver um script PowerShell como segue
Procurar servidor já determinado dentro de uma pasta também já determinada arquivo criado .txt
exemplo . srvxxxxx pasta everson\depositos\ferramentas
Este servidor e pasta são fixos não mudam.
Dentro desta pasta organizar por Date modified e identificar o arquivo mais recente criado.
Regras para identificação do arquivo.
Este arquivo é processado com 3 meses de atraso.
Ou seja o arquivo Frramentas_atuais.txt gerado em outubro de 2022 é processado em janeiro de 2023
após o mês de abril do corrente ano o mesmo muda de nome 
De:Frramentas_atuais.txt
Para:Frramentas_atuais_novas.txt

seguindo a regra como abaixo

Mês da geração do arquivo     Ano Criação do Arquivo                           Arquivo criado                    Mes para processamento do arquivo    Ano processamento do arquivo
outubro                                       2022    Frramentas_atuais.txt                      janeiro                              2023
novembro                                   2022    Frramentas_atuais.txt                      fevereiro                          2023
dezembro                                   2022    Frramentas_atuais.txt                      março                               2023
janeiro                                         2023    Frramentas_atuais_novas.txt         abril                                   2023
fevereiro                                      2023    Frramentas_atuais_novas.txt        maio                                  2023
março                                          2023    Frramentas_atuais_novas.txt        junho                                  2023
abril                                             2023    Frramentas_atuais_novas.txt        julho                                    2023
maio                                            2023    Frramentas_atuais_novas.txt        agosto                                 2023
junho                                          2023    Frramentas_atuais_novas.txt        setembro                            2023
julho                                           2023    Frramentas_atuais_novas.txt        outubro                                2023
agosto                                        2023    Frramentas_atuais_novas.txt        novembro                            2023
setembro                                   2023    Frramentas_atuais_novas.txt        dezembro                            2023
Após a identificação do arquivo conforme regras acima preciso copiar o arquivo para outro servidor para ser processado.
ex. srvxxxxx g:\everson\depositos\ferramentas\ sendo que o este mapeamento é fixo, porém para copiar o arquivo temos as seguintes regras.
Verificar se ja existe a pasta criada no formato AAAAMM referente ao processamento, pois neste caso é outra pessoa quem cria esta pasta.
Levando em conta que tenha que fazer esta movimentação hoje 05/2023 no destino onde o arquivo deve ser copiado devera existir uma pasta com o nome 202302, se não existir a pasta preciso 
que o script retorne erro 1 "pasta 202302 ainda não foi criada", e aborte a copia do arquivo.
Caso a pasta exista preciso criar uma sub pasta dentro da pasta 202302 com nome Novas_Lista e copiar o arquivo Frramentas_atuais_novas.txt
Exemplo:  
Em srvxxxxx g:\everson\depositos\ferramentas\202302\Novas_Lista
Neste caso com a pasta criada e o arquivo copiado o script retorne 0 "operação realizada com sucesso mostre o arquivo copiado e a pasta criada"
Como tenho dificuldade em PowerShell gostaria da colaboração de voê obrigado.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá, bem vindo ao clube do hardware.

 

Poderia enumerar os passos do seu script de forma temporal? de preferência como um algoritmo.

 

Também, mostre até que parte você conseguiu chegar, não fazemos scripts "complexos" do zero. Ajudamos com erros, dúvidas, damos sugestões e ensinamos uns aos outros.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Prezados, Swalls / Mega Blaster
Obrigado pelo retorno, é sempre bom poder contar com o conhecimento de vocês.
Gostaria de começar pedindo desculpas se passei a impressão de querer fazer alguém trabalhar por mim , não é meu feitio, mas entendo a colocação de vocês.
Quanto ao comentário do Mega Blaster “Trabalhinho de escola complicado, hein?”, com todo respeito este tempo bom já passou a muito tempo, na verdade trata-se da necessidade de se empenhar e aprender
mesmo com os contra tempos de nossas vidas.
Bom voltando a minha dúvida,  meu conhecimento na verdade de PowerShell e bem limitado, é mais com comandos do dia a dia como:
Listar arquivos
Exemplo:
Get-ChildItem -Path C:\Users\evers\Documents\Pasta_teste_1 
Get-ChildItem -Force C:\ -Recurse 
Copiar arquivos
Copy-Item -Path C:\Users\evers\Documents\Pasta_teste_1\everson1 -Destination C:\Users\evers\Documents\Pasta_teste_1\Teste_2 
Copy-Item -Path C:\Users\evers\Documents\Pasta_teste_1\everson1 -Destination C:\Users\evers\Documents\Pasta_teste_1\Teste_2 -Force 
Copia de pastas 
Copy-Item C:\Users\evers\Documents\Pasta_teste_1 -Recurse C:\Users\evers\Documents\Pasta_teste_5 
Nada muito sofisticado segue pessoal com algumas coisas que aproveito aqui dos fóruns.
Mas de qualquer forma agradeço ao retorno
Mas entendo o ponto de vista de você de deste fórum obrigado.
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Everson Franco Estevam disse:

se passei a impressão de querer fazer alguém trabalhar por mim

Passou a impressão de que é um trabalho escolar. É isso mesmo?

3 minutos atrás, Everson Franco Estevam disse:

com todo respeito este tempo bom já passou a muito tempo, na verdade trata-se da necessidade de se empenhar e aprender

Refere-se a isso, em relação à colocação, sobre escola ou sobre trabalho?

 

5 minutos atrás, Everson Franco Estevam disse:

Mas entendo o ponto de vista de você de deste fórum

@Everson Franco Estevam Peço que me desculpes. A intenção não é ofender nem criticar. É que muitos de nós já empenhamos ajuda, gastando muito, mas muito mesmo, tempo ajudando em situações semelhantes para descobrir que o postulante queria que resolvêssemos seus trabalhos escolares. Isso criou entre nós muita frustração e reservas quando aparece, da forma que apresentaste sua demanda. Como bem sabes, todos aqui nada ganham aqui, a não ser um like ou ticket de "Tópico solucionado". Fique tranqüilo que os especialistas da área irão lhe auxiliar.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

 

 

@Everson Franco Estevam Vamos começar. Por ser funções simples vou escrever em batch, e batch funciona no powershell.

Em 19/05/2023 às 12:16, Everson Franco Estevam disse:

Prezados,
Gostaria de pedir a colaboração de você para desenvolver um script PowerShell como segue
Procurar servidor já determinado dentro de uma pasta também já determinada arquivo criado .txt
exemplo . srvxxxxx pasta everson\depositos\ferramentas

Primeiro vamos com o cenário:

interpretando o que você disse com "procurar servidor já determinado e pasta já determinada", acredito que seja um servidor de arquivos ou compartilhamento de pastas, mas você não especificou se o script roda em uma máquina cliente(máquina da rede que não é o servidor), vou assumir que sim pelo "procurar servidor".

#para acessar o caminho de uma pastacompartilhada na rede pelo servidor com um nome em um domínio.
\\nome_do_servidor\caminho\pasta\

#se n tiver nome ou domínio, mas tiver na rede, para acessar pelo ip na rede.
\\ip.do.servidor.aqui\caminho\pasta\

#se o sevidor de arquivos também for o domínio que administra as máquinas(active directory), pode acessar assim:
%logonserver%\caminho\pasta

#obviamente seu pc tem que ter as devidar permissões para fazer isso

 

2

Em 19/05/2023 às 12:16, Everson Franco Estevam disse:

Dentro desta pasta organizar por Date modified e identificar o arquivo mais recente criado.

#listar uma pasta por data de criação e salvando em um txt temporario.
dir <pasta> /O:-D /d > temp.txt

 

3

Em 19/05/2023 às 12:16, Everson Franco Estevam disse:

Após a identificação do arquivo conforme regras acima preciso copiar o arquivo para outro servidor para ser processado.

#salvar em uma variavel qual o arquivo mais recente.
set /P "variavel=" < temp.txt
#copiar esse arquivo de um servidor para outro
copy "\\servidor1\caminho\%variavel%" "\\servidor2\caminho\"

 

condicional para ver se uma pasta existe, que você disse precisar antes de mover o arquivo (para mim existir isso não faz sentido).

if not exist "caminhoaqui" (
    echo A pasta não existe.
    exit /b
)

 

o copy já cria uma pasta basta escrever no final o nome da pasta ex: "\\servidor2\caminho\criandoagr", ent n tem essa parada de "caso exista, criar uma pasta", afinal se n existir ele vai parar o script ent n faz sentido ter um script só para criar a pasta.

 

Essas são a sintaxe básica que você precisa, tente criar e organizar do jeito que precisa com base nisso, obviamente lhe passei em batch mas batch também funciona em powershell.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Prezados, gostaria de deixar aqui em letras maiúscula minha “ADMIRAÇÃO” e verdadeira  “SIMPATIA” ao trabalho de todos membros deste fórum que por anos veem ajudando, colaborando com profissionais TI como eu em todas as áreas.

Infelizmente em nossa profissão muitas vezes recebemos demandas que na verdade não estão ao nosso alcance, quer seja por falta de tempo ou até mesmo pelo fator financeiro que não proporcionam oportunidade para cursos de áreas especificas.

Temos nas empresas hoje vários procedimentos sendo executados nas mais várias linguagens adequando a necessidade com a linguagem que tem melhor resultado em situações especificas.

Neste contexto em nosso dia a dia muitas vezes demandamos tarefas para outros profissionais que são mais especializados em determinadas linguagens, porém o que fica é entender o processo como um todo para quando este profissional por algum motivo não poder estar presente ter condições de avaliar e se possível conseguir intervir para que o processo não prejudique o negócio e quem sabe até propor uma melhoria continua no processo, sabemos que o “saber” é notório, mas não é único.

Dito isto “Mega Blaster / Swalls e a todos colaboradores deste fórum”, saibam que tem meu respeito e admiração pelo trabalho de todos”

Obrigado sempre.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!