[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