sobota 14. dubna 2012

Jak použít UNC cestu v příkazovém souboru .BAT pod Windows


Mějme od dřívějších časů připravený baťák (.bat soubor, nyní už pod Windows), který se vyskytuje na nenamapovaném síťovém disku. Dělá jednoduché operace jako výpis adresáře (dir) do souboru a spuštění php scriptu, který tento soubor zpracuje a výsledek zapíše do souboru xml (ano, jde o velmi jednoduchý generátor sitemap). Výsledkem po spuštění je ale nic uvedené hláškou:
Program CMD.EXE byl spuštěn a jako aktuální adresář byla nastavena cesta uvedená výše. Cesty UNC nejsou podporovány. Jako výchozí bude použit adresář Windows.
To znamená, že vše se pak chce odehrávat úplně nesmyslně v adresáři c:\Windows.

Jednoduché řešení jsem našel v textu Simplify UNC usage in command line batch files na Remote Administration For Windows:

pushd \\server\share
příkaz1
příkaz2
popd


Cesta je ad-hoc namapovaná na disk s písmenkem přiděleným od konce abecedy. Po provedení příkazů je písmenko zase uvolněno. Na to nezapomeňte, nebo se vám budou hromadit horníci!

V článku Get Directory Path of an executing Batch file jsem našel další vylepšení - samo-určení cesty, kde se baťák nalézá. Kód pak vypadá takto:

pushd "%~dp0"
příkaz1
příkaz2
popd


Stačí tedy přidat jen tyto dva řádky na začátek a konec vašeho starého BAT souboru a je hotovo :-)

MAKE Magazine

Technology Review RSS Feeds

Nejčtenější příspěvky