[Techinfo] cmd /c escape

Gyulai László gyulail at turr.edu.hu
2021. Feb. 5., P, 11:53:01 CET


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ó <gyulail at turr.sulinet.hu 
> <mailto:gyulail at turr.sulinet.hu>> 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
>     Techinfo at lista.sulinet.hu <mailto:Techinfo at lista.sulinet.hu>
>     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
> Techinfo at lista.sulinet.hu
> 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/

--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lista.sulinet.hu/pipermail/techinfo/attachments/20210205/13cb4edc/attachment.html>


További információk a(z) Techinfo levelezőlistáról