batch файлы

Тема в разделе "WASM.ZEN", создана пользователем systemio, 22 сен 2009.

  1. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    есть test.bat которому передается 1 входной параметр - файл
    в этом батнике нужно узнать директорию этого файла %1 (типа set dir = directory(%1) )
    Хелп, гуглить не помогло!
     
  2. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    Еще, как в батнике делается такое

    Если С:\путь\путь\имя_файла == файл_1.txt то
    // делать 1
    иначе если С:\путь\путь\имя_файла == файл_2.txt то
    // делать 2
    иначе
    // делать 3
     
  3. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
  4. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    что из этого константа, а что переменная
     
  5. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    отправлю тогда уж не в гугл, а в cmd>help (он то лучше свои команды знает)
    а именно cmd>call /?
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    смтортите HELP на команду SET
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    ой, вернее на команду FOR :)
     
  8. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    Вот поправил-нужно так:
    %1 имя переданной переменной (т.е. путь/файл)

    Если %1 == файл_1.txt то
    // делать 1
    иначе если %1 == файл_2.txt то
    // делать 2
    иначе
    // делать 3

    заранее спасибо!
     
  9. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    if #%~nx1==#файл_1.txt
    (делять 1) else if #%~nx1==#файл_2.txt
    (делять 2) else (делять 3)
     
  10. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    max7C4
    огромное спасибо - целый день седня мучиюсь и нигде не могу найти - где можно узнать о всех таких закорючках?
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    cmd.exe
    команда help
    и /? для каждой команды
     
  12. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    написал

    if %~nx1==INFO.txt
    set bf_tcl=./projects/lag.txt

    Выдает ошибку
    The syntax of the command is incorrect.
    D:\Profiles\ailyin>if INFO.txt==INFO.txt

    хотя иф правильный сформировался - в чем трабла подскажи?
     
  13. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    1. я не просто так поставил #
    2. set... пишутся сразу после INFO.txt иначе используйте скобки
     
  14. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    ага разобрался - огромное спасибо!!!
     
  15. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    если так и не поняли зачем нужна решетка - поясняю
    a.bat содержит
    if %~nx1==INFO.txt pause
    вызов a.bat без параметра выдаст синтаксическую ошибку в if, если поставить #, то ошибки не будет
     
  16. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    вопрос про команду set.
    Есть в System Properties -> Enviroment Variables (в винде) переменная var == "D:\"
    Открываю cmd
    делаю set var="C:\".
    читаю set var
    В cmd отображается что вар равен С - все правильно, но в System Properties -> Enviroment Variables переменная всеравно var == "D:\"
    почему так - или как мне поменять всетаки систем проп переменные из кмд?
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    set меняет переменную окружения только для процасса cmd, а не для системы в целом.
     
  18. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    уроки батаники на рсдн.
     
  19. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    punxer
    ссылку плиз?

    Вопрос (пля как мне эти батники надоели):
    Изначально T_ROOT=="С:\temp\"
    Сделал батник который меняет переменную:
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v T_ROOT /t REG_SZ /d "С:\temp5\\"
    запускаю этот батник - он отрабатывает без ошибок. затем иду в кмд и читаю переменную: set T_ROOT.
    Ответ T_ROOT=="С:\temp\" - какого хера!!! я же поменял реестр и открыл новую сессию батника!!!???

    Но!!! если я пойду в реестр и поменяю ручками T_ROOT на "С:\temp5\\" а затем открою кмд и прочту эту переменную то она отлично равна "С:\temp5\".

    Т.е. получается что батник меняет переменную но кмд читает старую каким то хером - зато в ручную все работает.
    Понимаю что написал много и догнать не с 1 раза можно - но может кто сталкивался уже с таким и как это забедить можно? СПАСИБО!
     
  20. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а в реестре изменения есть?