Batch-Satti
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Batch-Satti

Você não está conectado. Conecte-se ou registre-se

ajuda em editar um arquivo em txt

4 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1ajuda em editar um arquivo em txt Empty ajuda em editar um arquivo em txt Qua Jul 15, 2009 12:04 pm

alexssander



srsº

a dias estou precisando de um ajuda possuo um arquivo com varios itens em txt

segue um modelo

020000010000344005 texte KG 000000043001011204300000000000000000000000000

eu preciso de um bat que altere somente o que esta em vermelho para o amarelo e assim sucesivamente lembrando que e mais de 500 itens
0200000100003440010 texte KG 000000043001011204300000000000000000000000000

2ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Dom Jul 19, 2009 5:42 pm

Boss-Head

Boss-Head

pra poder fazer isso com um batch tem que ter algo que possa identicicarar a leitura
ex:
344001
344002
344003
ou
token 1 .....................2.....3...token 4
020000010000344005 texte KG 000000043001011204300000000000000000000000000

3ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Sex Jul 24, 2009 9:56 am

Boss-Head

Boss-Head

Código:
@ECHO OFF
::PRIMEIRO CRIAMOS UM BANCO DE DADOS COM VARIOS VALORES DIFERENTES PARA TESTES
(
echo 020000010000344005 TESTE KG 000000043001011204300000000000000000000000000
echo 020000010000344006 TESTE KG 000000043001011204300000000000000000000000000
echo 020000010000344007 TESTE KG 000000043001011204300000000000000000000000000
echo 020000010000344008 TESTE KG 000000043001011204300000000000000000000000000
echo 020000010000344009 TESTE KG 000000043001011204300000000000000000000000000
echo 02000001000034400p TESTE KG 000000043001011204300000000000000000000000000
echo 02000001000034400a TESTE KG 000000043001011204300000000000000000000000000
echo 02000001000034400j TESTE KG 000000043001011204300000000000000000000000000
echo 02000001000034400t TESTE KG 000000043001011204300000000000000000000000000
echo 02000001000034400s TESTE KG 000000043001011204300000000000000000000000000
echo 02000001000034400q TESTE KG 000000043001011204300000000000000000000000000
)>dados.txt
ECHO VEJA QUE O ARQUIVO FOI CRIADO E OS VALORES SAO UM DIFERENTE DO OUTRO
ECHO FECHE O ARQUIVO dados.txt E APERTE UMA TECLA
NOTEPAD.EXE dados.txt
PAUSE >NUL
:: DEPOIS CRIAMOS O ARQUIVO QUE VAI SUBSTITUIR AS PALAVRAS
(
Echo Dim FileName, Find, ReplaceWith, FileContents, dFileContents
Echo Find = WScript.Arguments^(0^)
Echo ReplaceWith = WScript.Arguments^(1^)
Echo FileName = WScript.Arguments^(2^)
Echo 'Ler arquivo texto
Echo FileContents = GetFile^(FileName^)
Echo 'substituir todas as strings no ficheiro
Echo dFileContents = replace^(FileContents, Find, ReplaceWith, 1, -1, 1^)
Echo 'Comparar o  fonte e o resultado
Echo if dFileContents ^<^> FileContents Then
Echo 'Sobrescrever resultados diferente
Echo WriteFile FileName, dFileContents
Echo Wscript.Echo "Feita a Substituição."
Echo If Len^(ReplaceWith^) ^<^> Len^(Find^) Then 'Podemos contar num das substituições?
Echo Wscript.Echo _
Echo ^(^(Len^(dFileContents^) - Len^(FileContents^)^) / ^(Len^(ReplaceWith^)-Len^(Find^)^) ^) ^& _
Echo " substituições."
Echo End If
Echo Else
Echo Wscript.Echo "Palavra Pesquisada não encontrada no arquivo fonte"
Echo End If
Echo 'Ler arquivo texto
Echo function GetFile^(FileName^)
Echo If FileName^<^>"" Then
Echo Dim FS, FileStream
Echo Set FS = CreateObject^("Scripting.FileSystemObject"^)
Echo on error resume Next
Echo Set FileStream = FS.OpenTextFile^(FileName^)
Echo GetFile = FileStream.ReadAll
Echo End If
Echo End Function
Echo 'Escreve string como um arquivo de texto.
Echo function WriteFile^(FileName, Contents^)
Echo Dim OutStream, FS
Echo on error resume Next
Echo Set FS = CreateObject^("Scripting.FileSystemObject"^)
Echo Set OutStream = FS.OpenTextFile^(FileName, 2, True^)
Echo OutStream.Write Contents
Echo End Function
)>subst.vbs
:: E AQUI CHAMAMOS TODAS AS POSSIBILIDADES DE TROCA PARA SUBSTITUIR AS PALAVRAS
:: SEMPRE SEGUINDO A SEQUENCIA DE
:: cscript //nologo subst.vbs PALAVRA-ANTIGA PALAVRA-NOVA "ARQUIVO.EXT"
set minuscula=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ç
set mumeros=0,1,2,3,4,5,6,7,8,9
for %%a in (%maiuscula%,%minuscula%,%mumeros%) do (
cscript //nologo subst.vbs 34400%%a 34400*TESTE* "dados.txt"
)
ECHO CONFIRA O RESULTADO
ECHO APERTE UMA TECLA
NOTEPAD.EXE dados.txt
PAUSE>NUL

4ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Sex Jul 24, 2009 10:01 am

Boss-Head

Boss-Head

EU TRABALHEI NO CASO NA SEQUENCIA DE 34400
PARA OBTER O RESULTADO NO SEU CASO VOCÊ TEM QUE TER UMA SEQUENCIA QUE SE REPITA PARA PODER SUBSTITUIR NO ARQUIVO
MAIS UMA COISA O ARQUIVO .VBS DESSE EXEMPLO FUNCIONA NO WINDOWS XP SE SEU SO FOR O VISTA TALVEZ TENHA DE MODIFICAR ALGUM COMANDO !
MÁS TESTA ANTES PARA VER SE FUNCIONA !

5ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Qua Jul 29, 2009 5:22 pm

Boss-Head

Boss-Head

Baseado no banco de dados que você me passou segue como pode ser feito o processo !
:: obs coloquei um - na frente somente para identificar qual palavra foi substituida
:: remova o - tracinho em -10%%a por 10%%a

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

Um detalhe se o nome do produto tiver no nome ex PENDRIVE 1GB
VAI SER MUDADO PARA PENDRIVE 10GB
O BATCH NÃO É 100 % SEGURO PARA FAZER ESSE PROCESSO ,MÁS FUNCIONA !

6ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Sex Ago 07, 2009 6:18 pm

GlaucoSK



Re: alexssander
Existe uma maneira mais prática de se resolver seu problema, porém faltou uma explicação mais clara do que você quer mudar. Você deseja mudar TODOS as sequencias com o número 5 no final (020000010000344005) ou qualquer sequencia, mudando sempre o número final para 10?

Se for mudar somente o último digito desta sequencia para 10 é bem simples:

@echo off
setlocal enabledelayedexpansion
for /f "TOKENS=*" %%A IN (DADOS.TXT) DO (
SET var=%%A
echo !var:~0,17!10!var:~18! >> DADOS2.TXT
)
pause

Caso deseje mudar o último digito para 10 somente se terminado em 5 basta substituir echo !var:~0,17!10!var:~18! >> DADOS2.TXT por if "!var:~17,1!" == "5" echo !var:~0,17!10!var:~18! >> DADOS2.TXT

Caso eu tenha entendido errado favor explicar mais detalhadamente.

7ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Sáb Ago 08, 2009 7:37 am

Boss-Head

Boss-Head

GlaucoSK
Primeiramente é um prazer ter você aqui conosco nos ajudando !
Adimiro muito seus trabalhos aprendi muito com você ..

Vou responder por ele e se estiver errado Alexssander me corrija
ele tem um banco de dados + ou - assim

020000010000344005PEPINO JAPONES KG 000000043001011204300000000000
020000011003699000TENDER SADIA S DES MED KG 00000004300000118490000
020000012001248030PICKLES CONS KG 00001204300121120410000000000000
020000014003799000TENDER SADIA BOLINHA STB 000000043000001184900000
020000015000499030FAR ROSCA COMPER KG 0000150430015112040000000000

e ele quer mudar somente o avalor destacado em amarelo para o valor 10
a logitude da cadeia de caracteres é constante o script que postei anterior pra ele funciona más poderia realmente ficar mais enxuto

8ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Sáb Ago 08, 2009 1:05 pm

GlaucoSK



Boss-Head
É um prazer para mim também participar deste fórum, e gostaria de ter conhecido esse fórum a mais tempo, pois poderia contribuir mais ajudando os usuários. Lembrem de divulgar o fórum em comunidades do orkut de DOS e batch.

Como você disse Boss, se for mudar somente o último digito para 10 meu script funciona perfeitamente. Vi também seu script porém percebi que você usou vb script em vez de batch. Gostaria de saber se o interesse desse fórum é simplesmente resolver os problemas dos usuários ou resolve-los em batch?

9ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Sáb Ago 08, 2009 2:17 pm

Boss-Head

Boss-Head

UM POUCO SOBRE MIM!
(Não vou entrar em detalhes pessoais da minha identidade)

Glauco como disse lá na comunidade no Orkut, ainda estou estudando
Sistema de informação (1º ano)!
Já fiz faculdade antes, más nada a ver com programação etc.

Comecei com batch quando tinha 10 anos + ou -.
Aquela época era o auge ainda do Windows 95 - 98 meu primeiro projeto foi modificar um disquete de boot.

Tenho implementado Vb script em muitos dos programas porque estou estudando na faculdade além do Java script e por ser fácil de colocá-los no batch, más principalmente por não depender de compiladores etc. e pelos recursos que ele tem sobre o batch !

Eu participo de alguns fóruns fora do Brasil onde as equipes utilizam muito, daí você pega uma coisa aqui outra ali etc.

Esse fórum meu eis professor (ele trabalhou pro meu pai e foi ai que nos conhecemos ) criou e me colocou pra tomar conta, porque ele ficava louco de ver que eu participava lá fora do Brasil e aqui no Brasil não.

Até o perfil Boss-Head foi ele quem criou pra mim, estive um bom tempo fora do Brasil, entrei numas de depressão!

Aprendi muita coisa de uns tempos prá cá, sou meio que autodidata, faço umas gambiarras daqui umas dali e acaba funcionando..

Glauco você pra mim é o professor aqui, se você quiser implantar outras linguagens ou mesmo utilizar somente o batch vou ficar muito feliz porque vou ver o mestre em ação.

Na verdade eu procuro resolver e auxiliar as pessoas de acordo com a necessidade delas Sempre tentando levar pro lado do batch script !

Na faculdade os caras falam em Vb.,. Perl, Phyton , Java ,etc.
Más batch, ninguém comenta, todos eles utilizam más não ensinam, não digo comandos isso eles ensinam, más a lógica de se programar em batch e fazer programas funcionais.

Desculpa de ter escrito essa declaração toda pra responder uma pergunta direta, acho que to meio carente e precisando desabafar.

10ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Seg Ago 24, 2009 4:54 pm

fhgeneroso



Olá, estou com um problema parecido mas não consegui aplicar a solução proposta.
Preciso abrir todos os arquivos que estão em uma pasta e substituir uma string que está no meio do arquivo por outra.

A solução mais perto que consegui chegar foi o script (.bat) abaixo, mas ele ainda tem alguns problemas:

1º - Na linha do findstr a string que estou buscando contem " (aspas) como faço para o camando ententer " como parte da string?
2º - do jeito que eu fiz, a nova string aparece no final do arquivo ao invés de substituir a string informada no find. Tem como substituir?

Código:
@echo off
setlocal
for /F "tokens=1" %%a in ('dir /b "D:\Workspace\proj\src\testgroups\*.java"') do (
    findstr /R ".setCOS(ArtCOS.getCOS("AITConsumer"));" < "D:\Workspace\proj\src\testgroups\%%a" > nul
    if not errorlevel 1 (
          echo ".setCOS(ArtCOS.getCOS(CoSes.AITCONSUMER));" >> "D:\Workspace\proj\src\testgroups\%%a"
    )
)

11ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Seg Ago 24, 2009 5:54 pm

fhgeneroso



O que acontece é o seguinte, preciso alterar todo texto que apareça:
.setCOS(ArtCOS.getCOS("AITConsumer"));
para:
.setCOS(ArtCOS.getCOS(CoSes.AITCONSUMER));

Abaixo vai um exemplo de arquivo com o trecho que precisa ser substituído. E na pasta que vou rodar o script tem vários arquivos que precisam da mesma substituição. Portanto preciso que o script abra todos os arquivos da pasta e procure pela string original, se ela existir naquele arquivo a string deve ser substituída pela nova string, esse procedimento deve ser aplicado até que todos os arquivos sejam alterados.


package dcl.art.variants.testgroups;

import dcl.art.mailsystem.*;

public class ArtAccessAndVerifyReminderSched extends ArtTestGroup
{

ArtDeliveryTable deliveryTableTest;
private ArtDevice mUserD;
private ArtDevice mUserDAlt;

@Override
protected void defineUsers() throws ArtScriptException
{
ArtDCSubscriber lDCSub;
lDCSub = new ArtAttSubscriber(getID(),
getName(),
getTelPrefix(),
getSubStream());
lDCSub.setInitStatus(InitStatus.INITIALISED);
lDCSub.setGreetingType(SysGreetingType.ANONYMOUS);
lDCSub.setForceNumGreet(false);
lDCSub.setInitSubscriberName(false);
lDCSub.setGroup(ArtCustomerGroup.ATT_BRAND_GROUP);
lDCSub.setCOS(ArtCOS.getCOS("AITConsumer"));
lDCSub.addAltDevice();
mUserD = lDCSub.getSubscriber().getPrimaryDevice();
mUserDAlt = mUserD.getSubscriber().getAltDevices().next();
}
}

Boss-Head

Boss-Head

ESPERO QUE VOCÊ ENTENDA O PROCESSO DE LEITURA E SUBSTITUIÇÃO
É RELATIVAMENTE SIMPLES ,A PRIMEIRA ETAPA DO SCRIPT É SOMENTE PARA GERAR O ARQUIVO DE TESTE CONTENDO A PALAVRA COM ASPAS ETC. E SEGUNDA ETAPA É QUE É O SCRIPT QUE FAZ O PROCESSO !
Código:
@echo off
:: GERANDO O ARQUIVO DE TESTE
(
Echo package dcl.art.variants.testgroups;
Echo import dcl.art.mailsystem.*;
Echo public class ArtAccessAndVerifyReminderSched extends ArtTestGroup
Echo {
Echo ArtDeliveryTable deliveryTableTest;
Echo private ArtDevice mUserD;
Echo private ArtDevice mUserDAlt;
Echo @Override
Echo protected void defineUsers^(^) throws ArtScriptException
Echo {
Echo ArtDCSubscriber lDCSub;
Echo lDCSub = new ArtAttSubscriber^(getID^(^),
Echo getName^(^),
Echo getTelPrefix^(^),
Echo getSubStream^(^)^);
Echo lDCSub.setInitStatus^(InitStatus.INITIALISED^);
Echo lDCSub.setGreetingType^(SysGreetingType.ANONYMOUS^);
Echo lDCSub.setForceNumGreet^(false^);
Echo lDCSub.setInitSubscriberName^(false^);
Echo lDCSub.setGroup^(ArtCustomerGroup.ATT_BRAND_GROUP^);
Echo lDCSub.setCOS^(ArtCOS.getCOS^("AITConsumer"^)^);
Echo lDCSub.addAltDevice^(^);
Echo mUserD = lDCSub.getSubscriber^(^).getPrimaryDevice^(^);
Echo mUserDAlt = mUserD.getSubscriber^(^).getAltDevices^(^).next^(^);
Echo }
Echo }
)>"Novo".txt

MSG * "VEJA O ARQUIVO ANTES DA SUBSTITUICAO DAS PALAVRAS"
NOTEPAD NOVO.TXT

PAUSE



::AQUI ESTÁ O ARQUIVO QUE SUBSTITUI AS PALAVRAS
:: ESSE AQUI VAI LER O ARQUIVO
for /F "delims=" %%f in (NOVO.TXT) do (
  set informacao=%%f
  call :PROCESSAINFO
)
set informacao=
goto EXIT
:PROCESSAINFO
:: NA VARIAVEL LOGO ABAIXO É QUE É FEITA A SUBSTITUIÇÃO
set TESTA=%informacao:"AITConsumer"=CoSes.AITCONSUMER%
echo %TESTA%>BOSS.TXT
:: ESSE AQUI É QUEM GRAVA O NOVO ARQUIVO CHAMADO DE HEAD.TXT
for /F "eol=; tokens=1,* delims=*" %%f in (BOSS.TXT) do echo %%f %%g >>HEAD.txt
set TESTA=
GOTO :EOF

:EXIT
MSG * "VEJA O ARQUIVO DEPOIS  DA SUBSTITUICAO DAS PALAVRAS"
NOTEPAD HEAD.txt
DEL BOSS.TXT
PAUSE

13ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Qua Ago 26, 2009 5:50 am

Boss-Head

Boss-Head

E essa é a versão configurável !
Código:
@echo off
setlocal enabledelayedexpansion
Echo.
set /p arquivo=Arquivo a ser alterado :
echo.
set /p Palant=Palavra a ser substituida :
echo.
Set /p nova=Nova palavra :


for /F "delims=" %%f in (%arquivo%) do (
  set informacao=%%f
  call :PROCESSAINFO
)
set informacao=
goto EXIT
:PROCESSAINFO
set TESTA=!informacao:%Palant%=%nova%!
echo %TESTA%>BOSS.TXT
for /F "eol=; tokens=1,* delims=*" %%f in (BOSS.TXT) do echo %%f %%g >>HEAD.txt
set TESTA=
GOTO :EOF

:EXIT
MSG * "VEJA O ARQUIVO DEPOIS  DA SUBSTITUICAO DAS PALAVRAS"
NOTEPAD HEAD.txt
del boss.txt
PAUSE

14ajuda em editar um arquivo em txt Empty Re: ajuda em editar um arquivo em txt Qua Ago 26, 2009 6:12 am

Boss-Head

Boss-Head

Se vc ver que funciona e quiser renomear seu arquivo original faz assim !
coloca no final do script assim !

:EXIT
MSG * "VEJA O ARQUIVO DEPOIS DA SUBSTITUICAO DAS PALAVRAS"
NOTEPAD HEAD.txt
del boss.txt
call :teste %arquivo%
:teste
ren %~n1%~x1 %~n1.Old
ren HEAD.txt %~n1%~x1
pause

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos