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/