-
Posts
61 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Marcos Pereira Simões
-
-
Preciso de um batch que leia um arquivo texto num diretório específico e com nome específico (EX: CB*.TXT).
Esse arquivo possui 400 posições e nesse mesmo arquivo preciso identificar as linhas que possuem na posição 109-110 o código 33.
Identificando, essas linhas que possuem esse código 33, elas deverão ser excluídas.
Após a exclusão deve-se reordenar o arquivo e ajustar o sequencial que fica na posição 396-400, ou seja, ajustar a última linha conforme a anterior.No arquivo exemplo, preciso apagar as linhas 00005, 00006 e 00007 e após ajustar o sequencial para finalizar com 00005 no lugar de 00008.
@ricardo_br e demais parceiros, me ajudem.
-
Boa tarde!
Preciso de ajuda para criação de uma bat que execute a seguinte regra:
Ex:
Na pasta C:\Temp\Remessa eu teria os seguintes arquivos:
ARQ_030201.txt; ARQ_030202.txt; ARQ_030203.txt ..............ARQ_030210.txtEu precisaria mover esses arquivos para pasta C:\Temp\Enviado com a mesma nomenclatura, apenas adicionando .ok (ponto+ok)
ARQ_030201.txt.ok; ARQ_030202.txt.ok; ARQ_030203.txt.ok ..............ARQ_030210.txt.ok
obrigado
-
26 minutos atrás, Swalls disse:
@Marcos Pereira Simões procure sobre o forfiles, acredito que ele foi feito exatamente para coisas assim.
ps: ricardo já é padrão de consultoria em batch kkk
Agradeço o tok é que o Ricardo sempre me ajudou.
valeu.@ricardo_br Valeu camarada por mais essa ajuda.
Perfeito, era exatamente como eu queria.1 hora atrás, ZTM disse:@Marcos Pereira Simões Olá Marcos, como vai?
Faça um LOOP, ou seja, utilize FOR, crie uma variável que pula de 1 em 1, porém, já vou deixar um aviso que esse 0(zero), vai prolongar o código provavelmente, pois ele é totalmente desnecessário, em outras palavras, você vai ter que criar um condição SE, neste caso, se chega no 09 à variável pula para 10, para facilitar a sua vida eu colocaria pulando de 1 em 1(1, 2, 3, 4 ...) e não (01, 02, 03, 04 ...).
Agora chegou a sua vez, dei as chaves do castelo, pega a dica e termina esse código.
Até.
@ZTMagradeço pelo retorno.
-
@ricardo_br Fala camarada!
Consegue me ajudar com a colocação de um sequencial nessa bat?Hoje o resultado é esse: CDC_2012.IDA
Preciso assim: CDC_201201.IDA, CDC_201202.IDA, CDC_201203.IDA (sequencial nos últimos dois dígitos)
@echo off
set Origem=C:\Documentos\Marcos\CDC.IDA
set Destino=C:\Users\marcos.psimoes\Documentos\Marcos\CDC_%date:~0,2%%date:~3,2%.IDA
move /y "%Origem%" "%Destino%" -
3 horas atrás, ricardo_br disse:
Pode ser que esteja reconhecendo como ascii porque não tem qualquer caractere unicode no arquivo se você colocar um caractere unicode como ç ê í ó acho que vira UTF-8...
Funcionou...valeu, obrigado.
-
3 minutos atrás, ricardo_br disse:
Pode ser que esteja reconhecendo como ascii porque não tem qualquer caractere unicode no arquivo se você colocar um caractere unicode como ç ê í ó acho que vira UTF-8...
beleza meu amigo, creio que vai funcionar
-
@ricardo_br te mandando um print
-
@ricardo_br mano, salvou como ANSI, não consigo testar agora, mas creio que talvez funcione.
Como é determinado na bat o encoding?
valeu e obrigado mais uma vez. -
Em 14/10/2022 às 19:08, ricardo_br disse:
Veja se está certo agora, subtrai 3 dias da data de hoje desconsiderando sábado e domingo:
@echo off :: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6 :: Explicando: :: Se for Segunda subtrai 5 dias da data de hoje para pegar a data de quarta-feira :: Se for Domingo subtrai 4 dias da data de hoje para pegar a data de quarta-frira :: se for Qualquer outro dia subtrai 3 dia da data de hoje: for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do ( if %%a EQU 1 ( Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a EQU 0 ( Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a GTR 1 ( Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) )
@ricardo_brboa tarde meu amigo!
Cara, tô com uma situação meio louca.
Quando eu rodo essa bat, gera certinho como eu quero, mas tem um detalhe que demorei pra conseguir encontrar.
O arquivo está sendo gerado com encoding UCS-2 LE BOM, mas esse arquivo está sendo rejeitado pelo sistema, pois o devido teria que ser UTF-8.O código abaixo que você fez pra mim também, gera UTF-8.
@echo off
SetLocal EnableDelayedExpansion
for /f "skip=1 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" -v "sShortDate"') do set FormatoData=%%aFOR /L %%a in (0,1,6) do IF /I "!FormatoData:~%%a,4!"=="yyyy" set "PAno=%%a,4"
FOR /L %%a in (0,1,6) do IF /I "!FormatoData:~%%a,2!"=="mm" set "PMeses=%%a,2"
FOR /L %%a in (0,1,6) do IF /I "!FormatoData:~%%a,2!"=="dd" set "PDias=%%a,2"set DataAtual=!Date:~%PAno%!!Date:~%PMeses%!!Date:~%PDias%!
set Ano=!Date:~%PAno%!
set Mes=!Date:~%PMeses%!
set Dia=!Date:~%PDias%!:: MesNu e DiaNu são data do Mês e Dia sem 0 na frente
set /a MesNu=10000%Mes% %% 10000
set /a DiaNu=10000%Dia% %% 10000
set /a AnoNu=%Ano%@echo off
Powershell (get-date).adddays(-3).tostring('yyyyMMdd')>"C:\Users\marcos.psimoes\Downloads\Marcos\Data.txt"
Powershell (get-date).adddays(-3).tostring('yyyyMMdd')>>"C:\Users\marcos.psimoes\Downloads\Marcos\Data.txt"Exit
:MesAnterior
IF !MesNu! EQU 1 (set MesNu=12& set /a AnoNu=!AnoNu! - 1) else (set /a MesNu-=1)
xcopy . temp /l /i /d:!MesNu!-!Contador!-!AnoNu! > nul 2>&1
IF /i !Errorlevel! EQU 0 (set DiaNu=!Contador!) else (Set /a Contador=!Contador!-1 & goto :MesAnterior)
goto :EOF
-
4 minutos atrás, ricardo_br disse:
@Marcos Pereira Simões Acho que tem razão tente GEQ ao invés de GTR | GEQ = Maior ou Igual
Ou então GTR 3 ao invés de 4...
Opa, foi com GEQ, valeu..abcs
-
Em 18/10/2022 às 10:55, ricardo_br disse:
@echo off :: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6 :: Explicando: :: Se for Segunda subtrai 5 dias da data de hoje para pegar a data de quarta-feira :: Se for Domingo subtrai 4 dias da data de hoje para pegar a data de quarta-frira :: se for Qualquer outro dia subtrai 3 dia da data de hoje: for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do ( if %%a EQU 1 ( Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a EQU 2 ( Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a EQU 3 ( Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-5).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a EQU 0 ( Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-4).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a GTR 4 ( Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) )
@ricardo_brFala mano! beleza?
Cara, esse código acima só está funcionando se no lugar do GTR 4 eu trocar por EQU 4.
-
@ricardo_br então, o sistema só busca a data se ela tiver gravada duas vezes.
@ricardo_br seloko, god, funcionou perfeitamente
-
@ricardo_br como faço pra direcionar o salvamento do arquivo num diretório específico?
-
@ricardo_br independentemente, tipo dia 31/07 caiu num domingo e vou considerar isso.
Pode considerar dias corridos. -
@ricardo_brFala meu amigo, bom dia!
De novo novamente..rs
Mano, é possível gerar uma bat que independentemente do dia que seja rodada, ela me traria um arquivo de data.txt com o último dia do mês anterior:
Ex: Hoje dia 27/10 (ou qq outro dia de Outubro) eu rodo a bate e ela me traria um arquivo data.txt com as seguintes linhas:20220930
20220930
No exemplo acima a data é o último dia de Setembro.
E assim vai, em novembro geraria.
20221031
20221031
Se puder me ajudar...
-
@ricardo_br fiz assim e funcionou ..
START C:\Users\marcos\Downloads\Marcos\new\SCE.EXEObrigado meu amigo
-
@ricardo_brbom dia mano!
To rodando isso pra testar (coloquei dois exes novos na pasta new e dois mais antigos na pasta old)
robocopy "C:\Users\marcos\Downloads\Marcos\new\" "C:\Users\marcos\Downloads\Marcos\old" /xo /log+:"C:\Users\marcos\Downloads\Marcos\new\Atualizacoes.log"
SCE.EXEMas dá esse erro:
ERRO: Parâmetro Inválido #2: "-"8 minutos atrás, Marcos Pereira Simões disse:@ricardo_brbom dia mano!
To rodando isso pra testar (coloquei dois exes novos na pasta new e dois mais antigos na pasta old)
robocopy "C:\Users\marcos\Downloads\Marcos\new\" "C:\Users\marcos\Downloads\Marcos\old" /xo /log+:"C:\Users\marcos\Downloads\Marcos\new\Atualizacoes.log"
SCE.EXEMas dá esse erro:
ERRO: Parâmetro Inválido #2: "-"Tirei as Aspas (") e foi, mas não executou o arquivo exe
-
2 horas atrás, Marcos Pereira Simões disse:
@ricardo_brgod..
Muito bom, certinho.
valeuagora, Marcos Pereira Simões disse:@ricardo_brmano, uns tempos atrás você me ajudou com uma bat (anexa) que compactava arquivos e que inclusive ignorava sábados e domingos.
Me ajuda, com base nessa bat anterior que você até corrigiu.
Pergunta: é possível aplicar a essa bat anexa a mesma regra para compactar?
Tipo gero os arquivos na segunda (17/10) e quando compactar no nome do arquivo iria a data de 14/10 sexta-feira. -
@ricardo_brgod..
Muito bom, certinho.
valeu -
@ricardo_brbom dia!
Então, ontem eu rodei a bat e funcionou certinho, ou seja dia 17 e gerou o arquivo de datas com data de 12/10/2022 , ou seja, com 3 dias atrás desconsiderando o sábado e domingo, exatamente como eu queria.Qua, Qui, Sex, Sáb, Dom, Seg
12 13 14 15 16 17
Porém seguindo minha lógica, hoje dia 18 deveria gerar dia 13, porém gerou 15 (Sábado).
-
@ricardo_brbom dia!
Agradeço muito, rodei hoje e gerou certinho o arquivo de data com o dia 12/10.Amanhã dia 18, quando eu rodar, vai gerar o arquivo de data de 13/10?
Abcs -
@ricardo_brna vdd são 3 dias anteriores, sempre desconsiderando o sábado e domingo.
Mas a ideia é a mesma que mencionou.
Digamos, segunda dia 17 eu gero 12/10 (desconsidera sáb e dom e menos 3 dias)
-
Em 10/10/2022 às 19:08, ricardo_br disse:
veja se é isso:
@echo off :: %%a = Numero Dia Semana: Domingo=0 Segunda=1 Terça=2 Quarta=3 Quinta=4 Sexta=5 Sábado=6 :: Explicando: :: Se for Segunda subtrai 3 dias da data de hoje para pegar a data de sexta-feira :: Se for Domingo subtrai 2 dias da data de hoje para pegar a data de sexta-feira :: se for Qualquer outro dia subtrai 1 dia da data de hoje: for /f "delims=" %%a in ('"powershell (get-date).dayofweek.value__"') do ( if %%a EQU 1 ( Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-3).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a EQU 0 ( Powershell -command "(get-date).adddays(-2).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-2).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) if %%a GTR 1 ( Powershell -command "(get-date).adddays(-1).tostring('yyyyMMdd')>'C:\Teste\Data.txt'" Powershell -command "(get-date).adddays(-1).tostring('yyyyMMdd')>>'C:\Teste\Data.txt'" ) )
@ricardo_brboa tarde meu camarada!
Pra ilustrar...
dia 13/10 (qui) - gerei arquivo de data de 10/10 (seg)
dia 14/10 (sex) - gerei arquivo de data de 11/10 (ter)dia 17/10 (seg) devo gerar arquivo de data de 12/10 (qua)
dia 18/10 (ter) devo gerar arquivo de data de 13/10 (qui)
dia 19/10 (qua) devo gerar arquivo de data de 14/10 (sex)e assim por diante (sempre desconsiderando sábado e domingo)
o esquema acima que me passou atende isso?
-
Meu amigo, boa tarde!
veja se você já fez algo nesse sentido:Num servidor XPTO na pasta \\empresa\sistemas\RP eu tenho os seguintes arquivos/programas (hipotético)
Nome Data da modificação
SCE.EXE 10/10/2022
SCE1020.EXE 10/10/2022
SCE3040.EXE 10/10/2022
SCE.log 10/10/2022
SCE.ini 10/10/2022
SCE.txt 10/10/2022Na minha máquina local no C:\Sistemas\ eu tenho esses mesmo arquivos e programas, porém com versão atrasada (conf data da modificação)
SCE.EXE 10/09/2022
SCE1020.EXE 10/09/2022
SCE3040.EXE 10/09/2022
SCE.log 10/09/2022
SCE.ini 10/09/2022
SCE.txt 10/09/2022Pergunta do milhão..
É possível criar uma bat ou vbs que eu ao clicar nessa, ela compara as versões, atualiza (ou não se tiver igual) e somente depois executa o programa SCE.EXE (programa principal)?
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
Exclusão de linhas com código específico
em Programação - outros
Postado
@ricardo_br Muito bom, brigadão por mais essa.