Ir ao conteúdo

Posts recomendados

Postado

Bom dia Pessoal do Clube .

Bom hoje trago mais uma duvida que surgiu no meu trabalho , vamos ver se tem solução kkkk.

Todos os dias no meu email chegam varias PDF e XML de notas fiscais , beleza eu baixo elas para meu desktop e o que eu tenho que fazer é renomeá-las de acordo com sua natureza .

Então vamos supor que chegou essa PDF , e depois que ais verifiquei , ficou assim

POLICOM NF 000.065.764 12.06.2019 - .pdf

O eu quero realizar em cima disso é verificar uma parte do seu nome , primeiro a data e de acordo com a data ela vai para uma subpasta , e depois dessa sub tem outra categoria que é a natureza , sendo VENDA , MATERIAL APLICADO , CONSUMO , FRETE  etc .

todo a estrutura que vai realizar isso eu sei fazer , só não sei verificar uma parte especifica do nome dos arquivos ,

Tem alguma forma de eu pegar um parte especifica do nome para eu comparar com uma variavel , nem que para isso eu tenha que dar um input do nome do arquivo em um txt temp ?

Tipo e conforme eu vou verificando o nome , automaticamente para cada "filtro" que passa ele cria o diretório

Só preciso saber o jeito de copiar o nome , o resto eu sei fazer , lembrando todos os arquivos sequem um padrão de nome e eles já estarão renomeados dentro de uma pasta .

Teria alguma forma de realizar isso ?

Postado

@BielSoftTec Tem sim.

Usa o comando DIR combinado com FINDSTR 

DIR lista o diretório

FINDSTR filtra a string desejada

 

Exemplo:

Dentro do diretório digite

DIR | FINDSTR "12.06.2019" 

Irá listar todos os arquivos que contenham esta data em qualquer parte do nome.

 

pode também combinar mais um  FINDSTR para filtrar  a saída por exemplo  a "data" mais "extensão"

DIR | FINDSTR "12.06.2019" | FINDSTR "pdf"

 

Você pode armazenar em uma variável para manipulação posteriores.

VAR=DIR | FINDSTR "12.06.2019" | FINDSTR "pdf"

ou direcionar para um arquivo de texto

DIR | FINDSTR "12.06.2019" | FINDSTR "pdf" > arquivo.txt

ai da para fazer um FOR para ler o aquivo linha por linha.

 

Nesse caso usei o dir filtrando tudo que possui a letra "m", depois  tudo que possui a letra "m" e "pdf".

204703154_Semttulo.png.0a8a432c2a84b72c3363d2c9b76fbe01.png

 

Muita gente não sabe, mas no cmd também da pra combinar comandos usando o "|" assim como no linux.🤙

Dica:

para que não apareça informações do cabeçalho use DIR /B

  • Obrigado 1
Postado

Deixa eu ver se entendi, você vai copiando as notas fiscais para a área de trabalho, renomeia elas ai quer que o bat as copie digamos para uma pasta chamada Notas\Data\Natureza e dentro de Notas vai estar mais ou menos assim:

 

31G0AHh.jpg

 

Me diz uma coisa a data vai ficar sempre nesse mesmo padrão terminando no terçeiro caractere da parte de traz do nome:

 

POLICOM NF 000.065.764 ##.##.#### - .pdf

 

Ou a data pode estar em qualquer parte do nome?

Postado

Bom dia Sr's

@ricardo_br  o que acontece , as notas sempre vão seguir este padrão de nome .

logo existe um subdiretório no sistema da minha empresa que serve para alocar estas notas sendo assim :

N:\ ....

\Notas de compra ( empresa )

\ Mês   " dentro da pasta mês tem as naturezas das notas "

 ( Frete , locação , NF consumo , NF material aplicado , NF mercadoria , NF serviço ) -> isso é pastas da natureza da nota 

logo eu renomeio estas PDFs com o padrão descrito , ele identificaria a data : MÊS  e a natureza eu definiria no script , pois cada empresa aqui presta um tipo de serviço , então se você a POLICOM eu definiria no bat

IF a%% equ POLICOM copy a%% diretório ( Material aplicado ) saca ?

no caso eu ia definindo as empresas no Batch file

Ou até mesmo poderia colocar algum nome no arquivo ( pdf ) para o batch identificar , tipo :                           POLICOM NF 000.065.764 12.06.2019 - MT .pdf  ( ai o batch identifica MT e leva esta nota para Material aplicado)

Pode ser assim também

Mas ainda estou encontrando dificuldades com o comando  FINDSTR pois eu não consigo passar ele para uma variável , e também mesmo passando teria que arrumar um jeito de dividir os nomes em variáveis diferentes !

Se puder me ajudar tipo isso

Vamos supor , tem o diretório  C:\

Dentro desse diretório tem vários arquivos PDFs

Então queria pegar cada nome e colocar dentro de uma variável diferente tem como ?

Que ai o resto fica fácil .

 

 

 

 

 

 

 

Postado

Essa parte de colocar os nomes de arquivos de uma determinada pasta dentro de variáveis é fácil é só usar o comando for.

 

Sugiro usar o método que você mesmo indicou de fazer tipo um padrão com a sigla da natureza:

 

.................12.07.2019MT.pdf

.................05.08.2019ME.xml

 

Há não ser que as mesmas empresas vão sempre para a mesma naturza, pro exemplo POLICOM vai sempre para Material Aplicado, Light vai sempre para consumo etc ai daria para apontar o nome da empresa sempre para tal natureza. Mais nunca acontece de uma mesma empresa ter notas fiscais para mais de uma natureza?

 

Mais tarde posto um exemplo bat....

Postado

Então foi que eu falei @ricardo_br  eu poderia definir as empresas já para sua natureza , pois as empresas aqui prestam serviço único , então posso fazer uma estrutura fixa , pois colocar um "prefixo" nos nomes das notas mudaria uma política da empresa de anos , logo teria de mudar todos as notas pelo menos de 6 anos , mas seria fácil com um batch.

Mas seria bom sem o "  prefixo " , Cara se eu conseguir finalizar este batch vai ficar  "mamão" .

 

Postado

beleza então, poderia fazer uma lista em qual natureza cada empresa vai tipo:

 

POLICOM -> Material Aplicado

...              -> ...........

..........      -> ..................

  • Curtir 1
Postado

Olha @ricardo_br  poderia até mas já estou quase de saída , no caso são muitas empresas , e basicamente de mês em mês são adicionadas novas , logo poderia fazer o exemplo com duas ou três delas e eu estudaria o código e modificaria para a situação aqui:

POLICOM    > MATERIAL APLICADO

WESTCON   > FRETE

PAPELEX     >  CONSUMO

Pois mesmo assim tem varias empresas que prestam o mesmo serviço então teria que setar todos aqui entende .

Se puder me ajudar te agradeço , e eu terminando o código eu poderia postar ele pra você dar o aval kkkkkk

Postado

Aqui vai um exemplo que eu criai mais um vídeo do > youtube <:

 


@echo off
SetLocal EnableDelayedExpansion
rem POLICOM MATERIAL APLICADO
rem WESTCON FRETE
rem PAPELEX CONSUMO

If not exist "%userprofile%\desktop\Notas" md "%userprofile%\desktop\Notas"
If not exist "%userprofile%\desktop\Notas\01 Janeiro" md "%userprofile%\desktop\Notas\01 Janeiro"
If not exist "%userprofile%\desktop\Notas\02 Fevereiro" md "%userprofile%\desktop\Notas\02 Fevereiro"
If not exist "%userprofile%\desktop\Notas\03 Mar‡o" md "%userprofile%\desktop\Notas\03 Mar‡o"
If not exist "%userprofile%\desktop\Notas\04 Abril" md "%userprofile%\desktop\Notas\04 Abril"
If not exist "%userprofile%\desktop\Notas\05 Maio" md "%userprofile%\desktop\Notas\05 Maio"
If not exist "%userprofile%\desktop\Notas\06 Junho" md "%userprofile%\desktop\Notas\06 Junho"
If not exist "%userprofile%\desktop\Notas\07 Julho" md "%userprofile%\desktop\Notas\07 Julho"
If not exist "%userprofile%\desktop\Notas\08 Agosto" md "%userprofile%\desktop\Notas\08 Agosto"
If not exist "%userprofile%\desktop\Notas\09 Setembro" md "%userprofile%\desktop\Notas\09 Setembro"
If not exist "%userprofile%\desktop\Notas\10 Outubro" md "%userprofile%\desktop\Notas\10 Outubro"
If not exist "%userprofile%\desktop\Notas\11 Novembro" md "%userprofile%\desktop\Notas\11 Novembro"
If not exist "%userprofile%\desktop\Notas\12 Dezembro" md "%userprofile%\desktop\Notas\12 Dezembro"


for %%a in (*.pdf *.xml) do (

Set Empresa=%%a
set nmes=!Empresa:~-14,2!
IF "!nmes!"=="01" set mes=01 Janeiro
IF "!nmes!"=="02" set mes=02 Fevereiro
IF "!nmes!"=="03" set mes=03 Mar‡o
IF "!nmes!"=="04" set mes=04 Abril
IF "!nmes!"=="05" set mes=05 Maio
IF "!nmes!"=="06" set mes=06 Junho
IF "!nmes!"=="07" set mes=07 Julho
IF "!nmes!"=="08" set mes=08 Agosto
IF "!nmes!"=="09" set mes=09 Setembro
IF "!nmes!"=="10" set mes=10 Outubro
IF "!nmes!"=="11" set mes=11 Novembro
IF "!nmes!"=="12" set mes=12 Dezembro

IF /i not "b!Empresa:Policom=!"=="b!Empresa!" (
IF not exist "%userprofile%\desktop\Notas\!mes!\Material Aplicado" md "%userprofile%\desktop\Notas\!mes!\Material Aplicado"
move "!Empresa!" "%userprofile%\desktop\Notas\!mes!\Material Aplicado"
)
IF /i not "b!Empresa:Westcon=!"=="b!Empresa!" (
IF not exist "%userprofile%\desktop\Notas\!mes!\Frete" md "%userprofile%\desktop\Notas\!mes!\Frete"
move "!Empresa!" "%userprofile%\desktop\Notas\!mes!\Frete"
)
IF /i not "b!Empresa:Papelex=!"=="b!Empresa!" (
if not exist "%userprofile%\desktop\Notas\!mes!\Consumo" md "%userprofile%\desktop\Notas\!mes!\Consumo"
move "!Empresa!" "%userprofile%\desktop\Notas\!mes!\Consumo"
)
)

 

 

SalvaNotaFiscal.zip

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!