Ir ao conteúdo
  • Cadastre-se

Marcos Pereira Simões

Membro Pleno
  • Posts

    61
  • Cadastrado em

  • Última visita

posts postados por Marcos Pereira Simões

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

     

    CBTESTE.TXT

  2. @ricardo_br

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

     

    Eu 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

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

  4. @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%"

  5. 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=%%a

    FOR /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
     

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

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

  8. @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.EXE

     

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

     

    Mas dá esse erro:

    ERRO: Parâmetro Inválido #2: "-"

    Tirei as Aspas (") e foi, mas não executou o arquivo exe

     

  9. 2 horas atrás, Marcos Pereira Simões disse:

    @ricardo_brgod..
    Muito bom, certinho.
    valeu

     

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

    Compactar.txt

  10. @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).

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

  12. @ricardo_br
     

    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/2022

    Na 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/2022

     

    Pergunta 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

×
×
  • Criar novo...

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!