Nefunguje proměnná v dávkovém souboru .bat
Ahojky,
takhle mám příkaz
set 30=tex
echo %30%
a místo, aby se vytisklo tex, zobrazí se mi 0.
Nevíte, v čem by mohl být problém? Používám XP.
Díky za rady.
Ahojky,
takhle mám příkaz
set 30=tex
echo %30%
a místo, aby se vytisklo tex, zobrazí se mi 0.
Nevíte, v čem by mohl být problém? Používám XP.
Díky za rady.
Zpět do poradny Odpovědět na původní otázku Nahoru
proměnná musí začínat písmenem AFAIK.
edit: tak nemusí a funguje to.
mozno to v bataku moze byt takto, ale zda sa mi zhovadilost pouzivat ako meno premennej cislo
chtělo by to vidět přesné použití v batce, ať je vidět s čím to může kolidovat.
Tak máte pravdu: proměnná není respektována, pokud začíná číslem.
Ale nějak mi nejde uplatnit znak %, např.
set hq=%%%
echo %hq%
sice zobrazí %, které však nelze použít třeba v příkazu na vyvolání aktuálního systémového času.
Nevíte, jak na to vyzrát?
aktuální systémový čas vypíšeš v baťáku
echo %time%
nebo
set cas=%time%
echo %cas%
jak k tomu chceš používat proměnnou s obsahem %?
uveď příklad
protože nikdy nevypisuješ řádek, ve kterém to skutečně používáš, ale jen zjednodušený příklad (který funguje), nemá cenu to dál řešit.
p.s.: konkrétně date, time:
pokud bys to použil v síti kde najdeš os různého stáří, někde to funguje, někde ne. a ještě musíš vzít v úvahu jazykovou verzi os - retardovaným windows totiž není možné žádným parametrem nakázat, ať vypisují datum ve stejném tvaru.
ale neuvádíš co přesně řešíš, tak ti to musí stačit takto obecně.
Jenže já z toho potřebuji vycucnout pouze rok, celé datum je mi k ničemu...
Na to je speciální příkaz
%date:~10,4%
No a když chci udělat proměnnou %hq% s obsahem %%%
%hq%date...e.t.c...
tak se sice vypíše %, ale systémová proměnná se naprosto ignoruje...
jo, rok je dobře (při českém nastavení data, od w2000 výš)
to nepude.
můžeš ještě zkusit hrátky se speciálním znakem "\", ale spíš to nepude - nejsi v linuxu.
pořád to funguje:
set rok=%date:~10,4%
echo %rok%
Tak nešlo by to datum vyvolat bez použití znaku %?
Jak říkám, vypíše se, ale naprosto ignoruje. A když jej zadám normálně, mám tam bordel, protože
%%etc%%
nadělá víc škody než užitku.
nevím co přesně chceš, ale s datem se pracuje trochu jinak, tady máš takový menší návod:
http://pc.poradna.net/q/view/760788-bat-batak-vypi nadlo?page=r760801#r760801
Výtečně - podařilo se mi přepsat celý kód a už to téměř funguje...
Ještě bych potřeboval porovnat hodnotu proměnné s konstantou, ale aby byl mezi nimi operátor "větší nebo rovno".
Něco jako:
if %var% ??? const command
Prosím, jak na to? Předem díky.
Podívej se na nejlepší nápovědu k příkazovému řádku, o které vím. Tam zcela určitě nalezneš odpovědi na všechny své otázky:
Pytlík : vdaka za ten odkaz, parada. Ukladam si.
No ale to je jen webová verze výstupu příkaz /?
viz cls /? nebo cacls /?
Jenomže to máš pěkně pohromadě, vidíš, jaké příkazy existují a podobně.
Ostatně: Nezaregistroval jsem žádné nařízení EU, které by přikazovalo to mít povinně v počítači, nebo to našprtat (doufám, že jsem nic nepřehlédl!). Takže ti nic nebrání v tom to ignorovat...
A smíš zcela volně a bez omezení používat tebou propagovanou nápovědu, jmenovitě cls /?, nebo cacls /? (a dokonce i jiné)
No když jsem četl tu ódu na ty skvělé stránky, tak jsem si myslel, že to bude včetně příkazů..
příklady použití mívají na nt
(asi to znáš, ale pro další)
Palec nahoru!
Brilantní...
Kód funguje, ale nevím, jak skrýt chybové hlášky (Přístup byl odepřen apod.) - v tom úžasném návodu jsem na tohle odpověď nenašel.
A do jaké míry je na konci nezbytný příkaz exit? Domnívám se, že je úplně zbytečný...
přesměrování chybového výstupu:
a příkaz exit na konci batky nemá význam.
Díky moc, já tenhle příkaz používal, ale nefungoval, protože jsem okolo > podstrčil mezery.
na výstup chybových hlášek je tam ta "2".
bez ní to filtruje jen klasické hlášky příkazu, pokud jsou.
To jsem neznal, to funguje už od DOSu? Nebo je to vychytávka od nějaké verze windows?
Edit: tak podle informací na webu je to od WinNT/2000
Některé výpisy lze přesměrovat do nul - zkus...
edit: tak už mě medvěd předběhl, tak jen doplním, že mezery nemají na funkci vliv...
Jen u některých chybových hlášení to prostě přesměrovat nejde...