Autor Zpráva
Veronika V.
Profil *
Dobrý večer, můžete prosím poradit jak vložit do proměnné část html kódu? Děkuji

SET HTML=
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>
</script>
</head>
<body></body>
</html>
mckay
Profil
Veronika V.:
Jde to, ale bude potřeba správně escapeovat rezervované znaky a pochopit jak funguje speciální symbol ^ (caret, [karet], česky stříška). Řešení které přiložím níže funguje, ale používá to různé triky, které se pokusím vysvětlit.

1) Nejprve nastavíme opožděnou expanzi, díky které se nebude kód vykonávat řádek po řádku, ale až opožděně (v moment, co to narazí na pomyslný konec příkazu). To se dělá takto:
setlocal EnableDelayedExpansion

2) Teď pochopíme jak funguje ^ (stříška).

- Používá se na dvě věci - escape rezervovaných znaků a escape konce řádku.
- Escapeování se používá, když chceme vypsat/použít znak, který má v programovacím jazyce nějaký význam a my nechceme, aby na něho daný programovací jazyk reagoval.
- Rezervované znaky v batch scriptu jsou < > | & ^ ( ).
- Kdybychom tyto znaky chtěli vypsat, musíme před ně hodit stříšku (a tedy je escapovat): echo ^< ^> ^| ^& ^^ ^( ^)
- Stříška má ještě jednu "skrytou vlastnost" - pokud následující znak je konec řádku, konec řádku se zachová, ale navíc se automaticky escapuje první znak následující po znaku konce řádku.

Pokud tohle všechno víme a chápeme, můžeme vytvořit něco takovéhleho:
setlocal EnableDelayedExpansion

set HTML=^<!DOCTYPE html^>^
<html^>^
<head^>^
<meta charset="utf-8"^>^
<meta name="viewport" content="width=device-width, initial-scale=1"^>^
<script^>^
</script^>^
</head^>^
<body^>^</body^>^
</html^>

echo !HTML!

Vyznačené části v kódu ukazují kde nepíšeme stříšku protože je to automaticky escapované stříškou na předchozím řádku.

Samozřejmě jsem většinu toho co jsem výše popsal nevěděl, ale s pomocí Googlu se mi podařilo dát to do kupy. Pro úplnost uvedu odkud jsem čerpal, kdybys narazila na nějaké problémy se znaky či parsováním (rezervované znaky, opožděná expanze, víceřádkové proměnné)
Veronika V.
Profil *
Teda to je rada :) Děkuji moc za super odpověď.
Snažila jsem se v cmd vytvořit nějaký script a narazila jsem při tom na tento problém. Sice tu stříšku mě Google dohledal, ale špatně jsem to aplikovala.



Nevíš prosím proč tohle funguje

set srcDIR=c:\cesta\do\neznama
cd %srcDIR%
for /r %%f in (*.*) do echo %%f

a tohle nefunguje?
set srcDIR=c:\cesta\do\neznama
for /r %%f in (%srcDIR%\*.*) do echo %%f

Jak můžu opravit druhou možnost aby byla funkční. Moc děkuji
mckay
Profil
Veronika V.:
Asi takto?

for /R %srcDIR% %f in (*.*) do echo %f

Nejprve složka jejíž podadresáře prohledáváme, pak parametr k výpisu a pak in "všechno".
Veronika V.
Profil *
Díky ale nefunguje to.
nemělo by to být takto?
for /R %srcDIR% %f in (*.*) do echo %f
Já se v těch procentech nevyznám, jednou je to na kraji jen jednou, někdy dvakrát, někdy je to na každé straně atd.. :(
Dohledat něco česky je problém.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0