Tudom felejtsem el a cmd-t. De nekem akkor is abban kéne megoldanom egy dolgot. Csak sehogy sem tudom.
Feladat:
Egy cmd-ben elindított program kimenetét ( stdout-ra ír ki egy sort, mert ráengedek egy windowsos grep-et), kéne változóként használnom ugyanabban a cmd-ben. Ami eddigi megoldásokat láttam, az számomra elég bizar volt.Egy fájlban eltárolrák az outputot, majd onnan beolvasták egy változóba, majd kitörölték a fájlt.Nem nagyon szeretnék írkálni temp fileokat.
Megoldható ez másképpen? Prog.hu előtt itt kérdezek inkább.
Köszönöm.
- 5100 megtekintés
Hozzászólások
for /?
amire figyelni kell az az escape-elés pl ha csövezés kimenete kell
- A hozzászóláshoz be kell jelentkezni
Pedig de, a SET -P XYZ= < tempfajl az ilyenkor szokásos tanclépés.
Bizisten sose fogtam volna powershellbe, ha nem volna ilyen elcseszett ez a "shell".
- A hozzászóláshoz be kell jelentkezni
márpedig semmi baj nincs a cmd-vel, csak van aki úgy áll hozzá hogy márpedig ez a kínai hülye hogy nem tud angolul :)
proba.cmd:
@echo alma > proba.txt
@for /F %%i in ('grep "a" proba.txt') do @set xyz=%%i
...
@echo %xyz%
- A hozzászóláshoz be kell jelentkezni
Próbálom megérteni amit írtál. Gyakorlatilag ez is készít egy proba.txt-t, azaz generál egy file-t!?
Ez abban különbözik amit én találtam megoldást, hogy itt a grep használata a file-ból való beolvasás után, míg amit én írtam az a fájlba írás előtt van. Jól értelmezem?
Fájl művelet nélkül nem is lehet?
- A hozzászóláshoz be kell jelentkezni
félreérted, az a fájl csak a példa kedvéért van ott hogy legyen a grep-nek dolga, semmi köze a te ideiglenes fájlodhoz, írhattam volna ezt is:
@for /F %%i in ('echo valami ^| grep "a"') do @set xyz=%%i
...
@echo %xyz%
lehet variálni, a lényeg hogy egy változó értékadásához amit a batch fájl vagy egy benne lévő program geneál a tdout-ra, nem kell külön fájlba írni, ott a "for" erre
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Az általad adott megoldással sikerült! Ezer köszi.
- A hozzászóláshoz be kell jelentkezni
Teljesen igazad van. Fájlok lúpolására még rendszeresen használom is a fort, de meg nem fordult a fejemben, hogy ha változóba szeretnék stdint préselni, akkor ott keressem a megoldást.
Pedig kézenfekvő. ;)
- A hozzászóláshoz be kell jelentkezni
valahol egyszer láttad hogy "for %i in *.txt" azóta meg intuitíven használod és még csak egy for /?-t sem futottad át? programozóként mennyi a wtf/nap-od, mennyi meglepetés ér hogy jé ez nem úgy működik mint ahogy vártam?
(mellesleg _van_ benne logika, csak elvárod hogy a doksi elolvasása nélkül is úgy viselkedjen mint a bash.. ha már húzott a szeme nem kezelem úgy hogy biztos folyékonyan beszél angolul, legalább rákérdezek:) )
;)
- A hozzászóláshoz be kell jelentkezni
"valahol egyszer láttad hogy "for %i in *.txt" azóta meg intuitíven használod és még csak egy for /?-t sem futottad át?"
Tkp. kb. így, annyi kieggel, hogy a valahol .batok tömkelege volt az ország munkanélküli ellátását végző rendszerben tucatnyi éve, akkor elég alaposan elolvastam a for helpjét. A tucatnyi év után kellett nem is régen újra belepiszkolnom ilyesmibe - a ciklusok szépen működtek, semmi okom nem volt újra elolvasni, pontosabban okom lett volna, mint most kiderült: a világ minden létező nyelvében ciklusszervezésszre szolgáló kulcsszónál kellett volna keresnem az stdines értékadást.
Komolyan mondom, tanulságos.
Egyébként eszembe jutott róla a jargon példája a bug-compatible kulcsszóhoz: "MS-DOS 2.0 used \ as a path separator to be bug-compatible with some cretin's choice of / as an option character in 1.0."
- A hozzászóláshoz be kell jelentkezni
hát azon nem fogunk összeveszni hogy ez egy kretén dolog, mert az :)
de azért az sem egy elhanyagolható ha valaki inkább fájlba irkál minthogy egy gugli "backtick in bat"-et eleresztene vagy ha picit komolyabban kell neki egy beépített szkriptnyelv akkor átfutná a manualt
- A hozzászóláshoz be kell jelentkezni
No, ez megint teljesen jogos, ui. nem ezeket a szavakat használtam a keresésre, hanem a cmd windows variable stdout redirect és hasonló szavak mixét, és pechem volt mert az én barátom az első féltucat találatra pont olyan fórumozók javaslatát adta, akik szintén nem olvasták végig a for /? eredményét - második hibám, hogy a féltucatból levontam a következtetést.
Jó bizonyság lettem arra, hogy a rest kétszer fárad: a cmd mint khmmm... shell leírásának komplett elolvasása helyett a powershellébe fogtam. Időn kívül nem veszítettem vele, ill. nyertem azt a tudást, hogy a kreténség nem végleges állapot.
- A hozzászóláshoz be kell jelentkezni