[Win98] Uitvoer pipen naar batch-bestand

Pagina: 1
Acties:

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Hoi. Ik wil iets heel simpels doen, maar het lijkt welhaast onmogelijk.
Iedereen zal de volgende regel wel enigzins bekend voorkomen:
code:
1
type text.txt | more


Nou wil ik een batch-bestand maken die ook op deze manier gegevens kan ontvangen:
code:
1
type text.txt | mybat.bat


Deze opdracht werkt natuurlijk wel, maar hoe kan ik vanuit mybat.bat zien wat er naartoe gepiped is? Kan dat uberhaubt wel?

Even voor alle duidelijkheid: het batch-bestand zelf doet niets met de invoer, maar moet het doorgeven aan een paar perl-scriptjes.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Tp21
  • Registratie: December 2003
  • Laatst online: 09-03 17:01
gebruik %1 op de plek waar je je invoer wilt hebben zoals.

echo %1 > c:\voorbeeld.txt

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Tp21 schreef op 22 februari 2004 @ 16:26:
gebruik %1 op de plek waar je je invoer wilt hebben zoals.

echo %1 > c:\voorbeeld.txt
Mnee, hiermee zet je het eerste argument in voorbeeld.txt.
Dus stel je roept aan:

code:
1
mybat.bat foo bar

Dan wordt 'foo' in voorbeeld.txt gezet. Dat moet ik niet hebben. Ik moet de output van programma 1 als input van programma 2 (het batchbestand) hebben.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Tp21
  • Registratie: December 2003
  • Laatst online: 09-03 17:01
MUBA schreef op 22 februari 2004 @ 16:34:
[...]


Mnee, hiermee zet je het eerste argument in voorbeeld.txt.
Dus stel je roept aan:

code:
1
mybat.bat foo bar

Dan wordt 'foo' in voorbeeld.txt gezet. Dat moet ik niet hebben. Ik moet de output van programma 1 als input van programma 2 (het batchbestand) hebben.
dit is maar een voorbeeld!
maar %1 is het eerste argument %2 het tweede, daar kun je verder alles mee doen. in een bestand zetten etc,
of bedoel je het > en >> teken?

gewoon echo %1 kan krijg je je input op het scherm

[ Voor 31% gewijzigd door Tp21 op 22-02-2004 16:40 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Je zult even willen kijken naar de FOR opdracht (al weet ik niet precies meer wat wel en wat niet wordt ondersteund door 9x, zie de SA FAQ voor een linkje naar de site van bijv. rob vd woude :) )

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Ik begrijp wat je wilt ;) Kun je de pipe niet gebruiken door de stdin op te vragen; volgens mij stuurt Windows namelijk daar de data naartoe :) Ik zal hier ook eens gaan experimenteren :)

Hmmm.. het lijkt zo goed als onmogelijk te zijn (zeker een oplossing die zowel in NT als in 95/98 werkt) zonder een externe utility als senvar :)

[ Voor 36% gewijzigd door Spider.007 op 22-02-2004 17:21 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Tp21 schreef op 22 februari 2004 @ 16:35:
[...]


dit is maar een voorbeeld!
maar %1 is het eerste argument %2 het tweede, daar kun je verder alles mee doen. in een bestand zetten etc,
of bedoel je het > en >> teken?

gewoon echo %1 kan krijg je je input op het scherm
Nee, niet het > en >> teken, geen arguments met %1..%9, maar gewoon een sluis ( | )

Wat jij zegt werkt namelijk echt niet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
D:\>type text.txt
Dit is een voorbeeld textbestandje
Mehh
Foo
Bar
D:\>type input.bat
@echo off
echo %1
D:\>type text.txt | input.bat
ECHO is ingesteld op uit.

D:\>

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
F_J_K schreef op 22 februari 2004 @ 17:00:
Je zult even willen kijken naar de FOR opdracht (al weet ik niet precies meer wat wel en wat niet wordt ondersteund door 9x, zie de SA FAQ voor een linkje naar de site van bijv. rob vd woude :) )
Heb gekeken, ook de oude faq, maar kan zo'n link niet vinden, helaas...

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Spider.007 schreef op 22 februari 2004 @ 17:13:
Ik begrijp wat je wilt ;) Kun je de pipe niet gebruiken door de stdin op te vragen; volgens mij stuurt Windows namelijk daar de data naartoe :) Ik zal hier ook eens gaan experimenteren :)

Hmmm.. het lijkt zo goed als onmogelijk te zijn (zeker een oplossing die zowel in NT als in 95/98 werkt) zonder een externe utility als senvar :)
Hmm, dat senvar lijkt me wel ok!
Alleen nog even een work-around scriptje maken dat alles dan goed afhandeld, maar ik denk dat ik hier best ver mee ga komen. Ok, nu eerst ff telefoneren met mn vriendin en dan die code ff door debug trekken. Thanx!

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

MUBA schreef op 22 februari 2004 @ 18:57:
Heb gekeken, ook de oude faq, maar kan zo'n link niet vinden, helaas...
offtopic:
SA FAQ: MS-DOS commando's en batch scripts, meteen de eerste geeft een mooie uitleg :)
Overigens is de edit knop (Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/edit.gif) best handig om niet steeds een nieuwe reactie te hoeven plaatsen ;)

Maar goed, senvar is een optie ja :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Heb ff een beetje geexpirimenteerd met senvar, en eigenlijk werkte het best flex allemaal, op 1 ding na: meerdere regels. Senvar stopt met het lezen van de input bij de eerste newline. Heb geprobeerd daar iets op te vinden, door senvar te combineren met het dos-commando set en lussen te proggen, maar ik kan niets bedenken dat volstaat. Heb ook nog ff gekeken of er een methode is voor een compileerbare taal die ik beheers en heb (dat zijn PowerBasic (oude versie) en Q(uick)Basic en Visual Basic 5/6). De versie van PB die ik heb kan dat niet. Een nieuwere versie wel maar da's natuurlijk niet gratis. Voor QB kan ik niets vinden en over VB wordt ook gezegd dat dat niet kan.

Waarschijnlijk houdt mijn plan hier op, of moet ik het batch-gedeelte overslaan en rechtstreeks in Perl gaan werken. Dat is op zich geen probleem, behalve dat je dan aanroepen krijgt als 'eenofandereopdracht.exe | perl d:\heel\lang\path\naar\het\script.pl', terwijl het ook gewoon met 'eenofandereopdracht.exe | batch.bat' zou kunnen (heb windows 98 en dus niet de mogelijkheid om '.pl' bestanden aan Perl te binden voor de command prompt.

Maar goed.. Het moet maar dan. Toch bedankt!

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


Verwijderd

MUBA schreef op 22 februari 2004 @ 14:51:
Hoi. Ik wil iets heel simpels doen, maar het lijkt welhaast onmogelijk.
Iedereen zal de volgende regel wel enigzins bekend voorkomen:
code:
1
type text.txt | more


Nou wil ik een batch-bestand maken die ook op deze manier gegevens kan ontvangen:
code:
1
type text.txt | mybat.bat


Deze opdracht werkt natuurlijk wel, maar hoe kan ik vanuit mybat.bat zien wat er naartoe gepiped is? Kan dat uberhaubt wel?

Even voor alle duidelijkheid: het batch-bestand zelf doet niets met de invoer, maar moet het doorgeven aan een paar perl-scriptjes.
je kan wel een ini bestandje gebruiken hoor...

code:
1
2
3
4
5
6
7
8
9
10
11
12
ini (test.ini):
[setup]=test
[config]=test1

batch:
@echo off
echo start
for /f "tokens=2 delims==" %%a in ('find /i "[setup]" test.ini') do set setup=%%a
for /f "tokens=2 delims==" %%a in ('find /i "[config]" test.ini') do set config=%%a
echo %setup%
echo %config%
echo end


succes

edit: ik zie net dat dit over w98 gaat. geen idee of dit werkt. het werkt iig op nt producten

[ Voor 9% gewijzigd door Verwijderd op 23-02-2004 14:39 ]

Pagina: 1