Csapongtam én is összevissza. Úgy néz ki, a listára beírás volt egy kiugrás a mókuskerékből, utána át tudtam logikusan gondolni a dolgot, és egyből jó lett. Többszörös a probléma, már az eredeti parancsnál is a for mögötti dolgoknál kell escape-elni. Aztán ha ezt akarom idézni a cmd /c után, akkor már az escape karaktert és az escapelendő karaktert is escapelni kell, hogy a cmd kibontás után még mindig megmaradjon egy escapelés a for miatt. Amúgy a batch fájlokban is azért kell a változókat két %-al írni, mert a % az egy parancs ott, és ha maga a % karakter kell, akkor escapelni kell. És ez esetben a dokumentáció szerint nem ^ és nem \ az escape karakter hanem %.

Nekem is kellett az egysoros, távoli futtatáshoz, ahol nem kényelmes ha előbb oda kell juttatni egy batch fájlt, pl. ha olyan user nevében futtatok akinek korlátozottak a jogosultságai.
De pl. veyon-os parancsküldésnél is hasznos lehet a dolog.

Valós használatban nyilván nem echo van a végén, én most copy / move műveletekre használtam, de most már másra is jó lesz, mert megértettem a működését, a tudást megszereztem.

GyL


2021.02.05. 8:38 keltezéssel, József Venczel írta:
Ügyes!
Én kb 3 éve futottam bele hasonló problémába. Akkor úgy oldottam meg, hogy batch fájlba tettem a parancsot és azt hívtam meg a cmd-vel. Azóta is így használom, de ez kényelmetlen megoldás, úgyhogy lenyúltam a tiédet. ;o)

Köszi!

Gyulai László <[email protected] <mailto:[email protected]>> ezt írta (időpont: 2021. febr. 4., Cs, 17:06):



    2021.02.04. 16:54 keltezéssel, Gyulai László írta:
    >
    > 2021.02.04. 16:51 keltezéssel, Gyulai László írta:
    >> Üdv mindenkinek!
    >>
    >> Küzdök egy problémával, próbálgatom az escape karaktereket, de még
    >> nem találtam rá a jó megoldásra.
    >>
    >> Van egy cmd alatti parancsom, ami tökéletesen működik (nem batch
    >> fájl, sima parancssor):
    >>
    >> for /f "tokens=*" %a in ('dir /ad-h /b d:\ ^| findstr /i /v
    >> ^"^ment$^"') do echo "%a"
    >>
    >> Amúgy ez kilistázza a %a változóba a d: meghajtón a
    könyvtárakat, a
    >> ment könyvtár kivételével.
    >>
    >> A problémám pedig az, hogy ezt a parancsot be kéne tenni egy
    cmd /c
    >> után, hogy ugyanígy lefusson. De ahhoz ugye kritikus karaktereket
    >> escape-elni kell. Nem találtam még meg a szent grált, esetleg ha
    >> valaki séróból tolja, az segíthetne.
    >>
    >>
    >> Köszönöm
    >>
    >> GyL
    >
    > Közben folyamatosan próbálkoztam, és ahogy beírtam a listára, hopp,
    > meg is lett a megoldás:
    >
    > cmd /c for /f ^"tokens=*^" %a in ('dir /ad-h /b d:^\ment ^^^|
    findstr
    > /i /v ^^^"^^ment$^^^"') do echo ^"%a^"
    >
    >
    > GyL
    >
    És elrontottam, ez nem azé a parancsé, mert d:\ helyett d:\ment mappa
    van benne, de mindegy, a lényeg az elv. Az eredetire a megoldás:

    cmd /c for /f ^"tokens=*^" %a in ('dir /ad-h /b d:^\ ^^^| findstr
    /i /v
    ^^^"^^ment$^^^"') do echo ^"%a^"

    GyL
    _______________________________________________
    Techinfo mailing list
    [email protected] <mailto:[email protected]>
    Fel- és leiratkozás:
    http://lista.sulinet.hu/cgi-bin/mailman/listinfo/techinfo
    Illemtan: http://www.szag.hu/illemtan.html
    Ügyfélszolgálat FAQ: http://sulinet.niif.hu/



_______________________________________________
Techinfo mailing list
[email protected]
Fel- és leiratkozás: http://lista.sulinet.hu/cgi-bin/mailman/listinfo/techinfo
Illemtan: http://www.szag.hu/illemtan.html
Ügyfélszolgálat FAQ: http://sulinet.niif.hu/

_______________________________________________
Techinfo mailing list
[email protected]
Fel- és leiratkozás: http://lista.sulinet.hu/cgi-bin/mailman/listinfo/techinfo
Illemtan: http://www.szag.hu/illemtan.html
Ügyfélszolgálat FAQ: http://sulinet.niif.hu/

válasz