CMD - problém s názvem adresáře
Zdravím,
Pokouším se vytvořit dávkový soubor (bat), který by zkopírovat do cílového adresáře pár souborů. Mám problém s cestou do cílového adresáře jelikož je v cestě vždy složka která se na každém PC jmenuje jinak. např. C:\Program Files\test\XYZ. Na druhém PC se složka jmenuje jinak např. C:\Program Files\test\ABC. Potřeboval bych tedy něco jako zástupný znak * pro složku. Zkoušel jsem snad vše, prolétl jsem celý google ale nic jsem nenašel. Jediné řešení co mě napadá je udělat výpis adresáře a uložit si název so souboru a pak ho načíst. Nějak takto: dir C:\Program Files\test\ > nazev.txt a pak ho načíst.
Existuje něco jednoduššího? Má někdo nějaký nápad?
Díky
Název složky pak dodáš jako parametr.
něco v tomto duchu?
xcopy D:\odsud\*.* C:\Program Files\test\XYZ
xcopy D:\odsud\*.* C:\Program Files\test\ABC
mozes pouzit prikaz for
tuto adresare maze http://blogs.msdn.com/b/oldnewthing/archive/2008/0 4/17/8399914.aspx prikazom rd, ty ich samozrejme nebudes mazat ale pouzijes tu premennu %%d na co chces (ako cestu pre kopirovanie). Ale bude to robit pre vsetky zlozky samozrejme, to si asi potom budes muset osetrit v tom cykle nejak, neviem jak :)
BTW. nesnazis sa urobit nahodou vir? ptz to budes mat tazke, Vista a vyssie nedovoluju zapisovat do program files bez admin prav
Máš v tom nejaky gulas nie? Ak sa cielova slozka (tam kde sa to ma skopirovat) taka, ze je vsade ina tak tam nemozes pouzit aj keby isel prestupny znak, pretoze to nebude vediet do ktoreho to ma skopirovat, este u zdroju by sa to dalo lebo vtedy by to mohlo hladat ten subor v priecinkoch
Ak chces, mozes to spravit tak ze sa ta to opyta na nazov tej zlozky. V praxi by to takto vyzeralo:
tieto 3 riadky si tam daj aj viac krat ak chces aby sa ta to viackrat opytalo
Asi by som to riešil podmienkou:
IF EXIST C:\Program Files\test\XYZ GOTO XYZ
Copy to ABC
:XYZ
Copy to XYZ
echo Current dir = %CD%
echo Script dir = %~dp0
echo Batch path = %0
se mi zdá, že si nějak zjednodušuješ život.
myslíš doufám na to, že různé systémy mají různý název "C:\Program Files", "C:\Program Files (x86)"?
a navíc pokud nemají zakázaný uac, že kopírování pravděpodobně skončí chybovým hlášením?
Pokud je ve složce test vždy jen jedna složka lze její název uložit do proměnné:
for /f "delims=" %a in ('dir /b /d "%programfiles%\test"') do @set slozka=%a
Cesta cíle při kopírování ja pak tato:
"%programfiles%\test\%slozka%"
EDIT: parametr %a by v cmd skritpu měl být %%a
tak jest. Takto se řeší např. skriptování uživatelských profilů Firefoxu a Thunderbirdu.