Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6

Модерирует : KLASS, IFkO

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 6
(часть 1, часть 2, часть 3, часть 4, часть 5)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndySS
    GetMail - http://pages.interlog.com/~tcharron/getmail.html

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:50 14-11-2008
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1. как правильно скопировать содержимое папки вместе с файлами и каталогами, если батник находится в самой папке.
    Этот вариант:
    Цитата:
    cd..
    xcopy "имя_каталога" "D:\имя_каталога\" /Q /H /Y /K /C /E
    ненравится тем, что если каталог переименовать, то батник станет нерабочим. Переменная %~dp0 со слешем, не подходит в качестве имени каталога.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 23:07 14-11-2008
    Froz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO,
    xcopy "%cd%" "D:\%cd:~3%\" /Q /H /Y /K /C /E

    Всего записей: 161 | Зарегистр. 03-02-2004 | Отправлено: 23:15 14-11-2008 | Исправлено: Froz, 23:17 14-11-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO

    Код:
     
    @echo off
    setlocal
    for /f "tokens=*" %%a in ("%cd%") do set "dirToCopy=%%~nxa"
    cd..
    xcopy "%dirToCopy%" "d:\%dirToCopy%\" /Q /H /Y /K /C /E
     

     
    Добавлено:
    Froz
    Проверь, что тебе выдает "D:\%cd%\"  
     
    Добавлено:
    Froz
    "D:\%cd:~3%\" - тоже неправильно.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:15 14-11-2008 | Исправлено: Elroir, 00:40 15-11-2008
    Froz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     
    Всё правильно.
     
    А в xcopy нет параметра Q без слеша.

    Всего записей: 161 | Зарегистр. 03-02-2004 | Отправлено: 23:48 14-11-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Froz

    Цитата:
    Всё правильно.  

    Ну вот представь себе, что полный путь к директории, которую надо скопировать такой - c:\dir1\dir2\dir3\dir4\dir5. В твоем варианте, мы копируем директорию dir5 не в d:\dir5, а в d:\dir1\dir2\dir3\dir4\dir5. Это правильно?
     

    Цитата:
    А в xcopy нет параметра Q без слеша.

    Да, конечно. Это я скопировал ключи из поста AZJIO и пропустил первый символ.
    Сейчас исправлю.


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:39 15-11-2008
    Froz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     

    Цитата:
    копируем директорию dir5 не в d:\dir5, а в d:\dir1\dir2\dir3\dir4\dir5. Это правильно?

     
    А что ж неправильно? Это рабочий вариант. Копируем полную структуру каталогов =) Не факт, что это единственный вариант, но он точно не неправильный.

    Всего записей: 161 | Зарегистр. 03-02-2004 | Отправлено: 01:39 15-11-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Froz

    Цитата:
    Не факт, что это единственный вариант, но он точно не неправильный.

    Ты ведь отвечал на конкретный вопрос, а не рассматривал абстрактные варианты.
    AZJIO совершенно четко указал, что ему надо скопировать директорию на диск D: (xcopy "имя_каталога" "D:\имя_каталога\"), а не создавать на нем весь путь до этой директории.  


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:50 15-11-2008
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Froz
    Спасибо. Кстати, вариант Froz мне тоже подходит, так как каталог в который будет скопировано содержимое можно указать явно. Оба варианта на вооружение. Из этого сделал вывод, что %cd% - это путь к каталогу из которого запущен батник, а %cd:~3% - тот же путь с удалением трёх символов в начале?

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 02:40 15-11-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO

    Цитата:
    %cd% - это путь к каталогу из которого запущен батник

    %cd% - это путь к текущему каталогу

    Цитата:
    %cd:~3% - тот же путь с удалением трёх символов в начале?

    Да. В общем случае, %var:~n% - это переменная var, начиная с n-ого символа.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:55 15-11-2008
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Нашёл параметр %cd% в справке, хотя подобная справка и в винде есть.
     
    Ещё вопрос: можно ли из батника запустить второй батник, но чтобы он выполнялся как самостоятельный, чтобы путь %cd% использовался для последующего батника.
    В первом батнике так:
    Цитата:
    cd..
    cd..
    my2.bat
    Пробовал вариант через exe-файл, который запускает второй батник, но два варианта exe-файла почему-то использовали корневой каталог первого батника, то есть второй батник работал неправильно. Если второй батник запустить кликом мыши, то он отрабатывает правильно.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 04:07 15-11-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO

    Цитата:
    можно ли из батника запустить второй батник

    call /?
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:25 15-11-2008
    timsky



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть текстовый файл, содержащий телефонные номера. Около 50 номеров, каждый номер в отдельной строке.
    Может кто-нибудь, показать, как из этого файла читать рандомную строку в переменную?

    Всего записей: 2287 | Зарегистр. 08-06-2004 | Отправлено: 13:36 15-11-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    timsky

    Код:
     
    @echo off
    setlocal
    set "lines=0"
    for /f "tokens=*" %%a in (numbers.txt) do set /a "lines+=1"
    set /a "skip=%random% %% lines"
    if %skip% lss 1 (set "skip=") else (set "skip=skip=%skip%")
    for /f "%skip% tokens=*" %%a in (numbers.txt) do set "number=%%a"&goto display
    :display
    echo %number%
     
     
     
    Добавлено:
    AZJIO
    Я не совсем понимаю, что ты пытаешься сделать. Использовать во втором батнике то значение переменной %cd%, которое было в первом батнике?

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:49 15-11-2008
    timsky



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Огромное спасибо!

    Всего записей: 2287 | Зарегистр. 08-06-2004 | Отправлено: 17:29 15-11-2008
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    если я делаю батник, то в нём я использую относительные пути, относительно каталога в котором находится батник. Если я его запускаю, он работает правильно. Если я пытаюсь запустить батник из другого батника, то он пишет что не найден путь, или не найден файл.  
    В теме LiveCD есть конструктор, который после сборки вносит изменения в сборку, там и переменные определены, казалось бы всё просто, и пути легко настроить, но сколько не бился с разными вариантами импортирования своего кода, так и не смог сделать чтоб он отработал самостоятельно. Если я буду при каждой сборке копировать файлы внутрь переменных окружения, то есть во временную папку, думаю всё бы получилось, но это лишнее время на копирование 480 мелких файлов. Файлы - иконки, которые патчат системные библиотеки под висту.
    Может если сделать извлекающийся архив во временную папку тогда действительно пару секунд на извлечение не имело бы значение.
    Были ещё случаи, к примеру нужно одним кликом запустить офисные программы, каждая программа не обязательно запускается *.exe файлом, а чаще батником, который проверит наличие профилей и (или) скопирует прогу на диск B, тогда приходится копировать код из батника в батник который запускает несколько программ сразу и переделывать пути и прочее, чтоб этот код сработал из текущей директории, когда на много удобней было бы указать пути к батникам, которые требуется выполнить. Редактировать тоже приходится уже не один батник, но и про второй не забывать. Есть программка installs.exe (60 кб), которая вроде решила часть проблем, но она не работает с CD-носителя.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 19:44 15-11-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO

    Цитата:
    Если я пытаюсь запустить батник из другого батника, то он пишет что не найден путь, или не найден файл.    

    Пиши абсолютные пути. Может Elroir и поймёт твоё объяснение (или вопрос?), я смутно догадываюсь. но не до конца.  . Лучше задавать вопрос с конкретным кодом, с конкретной директорией, с конкретным примером, что пишется в  батнике.
    Вот здесь http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=220
    обсуждалось что то, может поможет.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:13 15-11-2008 | Исправлено: king_stiven, 22:28 15-11-2008
    DANT1FIL

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Зравствуйте. Помошите пожалуйста написать батник...
     
    Как сделать что бы при запуске компа батник проверял, работает ли интернет или нет? если работает, то завершал свою работу, а если нет, то перезагружал комп.??  
    Помогите пожалуйста.
     

    Всего записей: 1 | Зарегистр. 15-11-2008 | Отправлено: 23:42 15-11-2008
    Froz



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DANT1FIL
     

    Код:
     
    @echo off
    ping ya.ru
    if errorlevel 1 shutdown -r -f -t 0
    exit
     


    Всего записей: 161 | Зарегистр. 03-02-2004 | Отправлено: 23:49 15-11-2008
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven

    Цитата:
    я смутно догадываюсь. но не до конца

    не стал отправлять свой пост, пока писал и проверял, понял, что дело в конструкторе, нужно с ним проверять батники.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 02:11 16-11-2008 | Исправлено: AZJIO, 02:36 16-11-2008
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru