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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    pom205

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Мужики, подскажите, как сделать. Есть reg-файл в нём пути к папкам и файлам, как их автоперепрописать (ну пусть они в виде некой переменной %ThisFolderPath%), к папке запуска. Т.е. в указанных конфигурационных (reg, ini...) файлах пути поменять на текущие? Тут, видимо какая то утилитка нужна масюсенькая, но какая - загадка вселенной.

    Всего записей: 555 | Зарегистр. 03-06-2006 | Отправлено: 02:56 18-05-2007 | Исправлено: pom205, 03:03 18-05-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    pom205
    Посмотри в шапке работа с текстом -> замена текста в файлах.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 03:06 18-05-2007
    Maza Faka



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

    Код:
     
    gsar -s"Старый текст" -r"Новый текст" -o File.reg
     

    Сама утилита здесь

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:11 18-05-2007
    wolf0425



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

    Цитата:
    мб тупой вопрос , но как батником просто создать пустой файл?
    надумал @ECHO OFF>FILE , но может как-то проще можно?

    echo. 2>file
    в отличие от break>file - нет скрытых побочных эффектов

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 08:49 18-05-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425У Вас было
    Цитата:
    If !Flagmany! Gtr 1 for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na"  
    IF "!soursepart:~-2!"==":\" set "soursename=Archive"
    сделал так
    Цитата:
    If !Flagmany! Gtr 1 for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na" & IF "!soursepart:~-2!"==":\" set "soursename=Archive"
    Иначе при работе в корне диска soursename=Archive ВСЕГДА. А это противоречит п.2в в ТЗ.
    Вопрос. Почему Вы используете
    Цитата:
    for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na"
    вместо
    Цитата:
    FOR /D %%a IN ("!soursepart:~0,-1!") DO set "soursename=%%~na"
    Запись то немного длиннее получается. В этом есть какой то скрытый смысл?
     
     
     
     

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 09:30 18-05-2007
    wolf0425



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

    Цитата:
    Почему Вы используете
    for /F "tokens=*" %%a in ("!soursepart:~0,-1!") do set "soursename=%%~na"
    вместо
    FOR /D %%a IN ("!soursepart:~0,-1!") DO set "soursename=%%~na"
    Запись то немного длиннее получается. В этом есть какой то скрытый смысл?

    1. привычка - я чаще оффлайновые списки обрабатываю или текст.
    2. если в обрабатываемой строке нет * или ? - разницы никакой,
    если есть - то for /f выдаст строго одну (первую) строку, раскрытую в соответствии с текущим содержимым диска, или как в оригинальном виде если на диске таких файлов/каталогов нет.
    а for /d с таким параметром - может выдать и много строк (все, что подходят под *) и ни одной (если сейчас таких каталогов нет).
    Предпочитаю определенность в количестве проходов - мало ли что в список попадет
     

    Цитата:
    Иначе при работе в корне диска soursename=Archive ВСЕГДА

    что ж, недочитал.
     
    Добавлено:
    Maza Faka

    Цитата:
    gsar -s"Старый текст" -r"Новый текст" -o File.reg  

    1. ссылка что ты дал - дохлая. в следующий раз не поленись проверить.
    2. очень вероятно что в данном конкретном случае gsar очень неудобен -  
    gsar -s"c:\" -r"d:\" -o File.reg  
    пожалуется на некорректные аргументы. лучше уж файлик из шапки.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:49 18-05-2007 | Исправлено: wolf0425, 11:54 18-05-2007
    Elroir



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

    Цитата:
    ссылка что ты дал - дохлая. в следующий раз не поленись проверить.

    Ссылка рабочая - все качается.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:46 18-05-2007
    igor_andreev

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

    Цитата:
    2. очень вероятно что в данном конкретном случае gsar очень неудобен -  
    gsar -s"c:\" -r"d:\" -o File.reg  
    пожалуется на некорректные аргументы.

    Хэлп читать надо Если запустить gsar без параметров, там про это будет написано. Двоеточие необходимо удвоить. И обратный слеш удвоить.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 13:16 18-05-2007 | Исправлено: igor_andreev, 13:35 18-05-2007
    wolf0425



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

    Цитата:
    Хэлп читать надо

    так бесполезно - от этого удвоение более удобным не станет же.
    в том же sed удваивать придется только бакслеши, а в тупой програмке из шапки - таких проблем чрезмерного ума нет, как и необходимости таскать комплект экзешников...
     
    в .reg и так бэкслеши обычно удвоены,  ещё раз их удваивать - недолго и запутаться

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:55 18-05-2007 | Исправлено: wolf0425, 14:22 18-05-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
    Ты прав, именно в этом случае "gsar" и "sed" не подойдут.
    Если reg-файл будет в кодировке Unicode, "gsar" просто не работает, "sed" работает, но спотыкается на строках с ":" и "\\" (например никак не смог заменить в рег-файле строку "C:\\Program Files\\MyProg" на "D:\\Install\\Program")
    А вот стандартными средствами reg-файл в кодировке Unicode разобрать можно, через "Type".

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:37 18-05-2007 | Исправлено: Maza Faka, 15:43 18-05-2007
    Elroir



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

    Цитата:
    А вот стандартными средствами reg-файл в кодировке Unicode разобрать можно, через "Type"

    Тогда уж через "more" - он полностью поддерживает Unicode.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:42 18-05-2007
    Maza Faka



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

    Цитата:
    Тогда уж через "more" - он полностью поддерживает Unicode.

    А "type" поддерживает его частично?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:45 18-05-2007
    pom205

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    От сенькью, так сенькью. Сейчас изучу!
     
    Добавлено:
    Ребяты, с реестром проблему решил, читаем в шапке
    Цитата:
    Переменная %0  
    .
    Заталкиваем reg-файл в реестр прямо с переменной
    Цитата:
    некой переменной %ThisFolderPath%
    . И
     уже там её меняем на
    Цитата:
    Переменная %0  
    .
    Потестите локализатор, плиз.
     
    Добавлено:
    Мужуки, вы не поняли. Проблема не в замене текста, а В ВЫЧИСЛЕНИИ ТЕКУЩЕГО ПУТИ запуска локализатора!
     
    Добавлено:
    PowerGrep имеет подобные переменные. Типа выстроить все ссылки ОТНОСИТЕЛЬНО выбранного пути. Но он же - монструоза неудобная.

    Всего записей: 555 | Зарегистр. 03-06-2006 | Отправлено: 16:00 18-05-2007
    igor_andreev

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

    Цитата:
    А "type" поддерживает его частично?

    А type делает из него ANSI. Этож самый простой способ переконвертировать unicode, с type...
    type unicode.txt>ansi.txt

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 16:32 18-05-2007
    renreg



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Честно говоря, все страницы тем читать не смог. Пролистал наугад, но не нашел.
     
    Для запуска программ с флешки или с компакт-диска я пользу.сь bat-файлами. Но это некрасиво. Существует ли программа, которая делает подобные операции и записвает все в один ехе-шник с возможность создания значка соответствующего программе.
     
    Или я мнго хочу?

    ----------
    Заграница нам поможет
    _____________________
    renreg

    Всего записей: 5117 | Зарегистр. 24-09-2001 | Отправлено: 16:58 18-05-2007
    pom205

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    renreg
    Я пхаю в самараспаковывающиеся архивы с параметрами автозапуска регистрационных файлов по извлечении.
    Есть ишшо Thinstall и Molebox.

    Всего записей: 555 | Зарегистр. 03-06-2006 | Отправлено: 17:20 18-05-2007
    Levitant



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребят помогите пожалуйста
    Есть подключение ВПН  
     
    Подключается следующим образом  
     
    rasphone -d "haz 2"
     
    А как сделать проверку каждые 10 минут, если не запущено подключение, то запускать его.
     
    Можно и не проверять запущено оно или нет а просто сразу запускать, т.к если оно запущено, то просто ничего не произойдет

    Всего записей: 62 | Зарегистр. 09-11-2006 | Отправлено: 17:27 18-05-2007 | Исправлено: Levitant, 17:28 18-05-2007
    wolf0425



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

    Цитата:
    Проблема не в замене текста, а В ВЫЧИСЛЕНИИ ТЕКУЩЕГО ПУТИ запуска локализатора!  

    а ТУТ в чем нашел проблему?  
    set "tempparth=%cd:\=\\%" для подготовки к замене в экспортированную в формат REGEDIT4 регистри...
     
    если нужен не текущий путь, а путь к запущенному батнику - пользуй %~dp0

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:28 18-05-2007 | Исправлено: wolf0425, 17:30 18-05-2007
    NIKZZZZ



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

    Цитата:
    Существует ли программа, которая делает подобные операции и записвает все в один ехе-шник с возможность создания значка соответствующего программе.

    Например WinRar - он позволяет создать самораспаковывающийся архив с запуском нужной программы, для батников можно использовать Quick Batch File Compiler , который позволяет упаковать нужные файлы в один EXE и запустить батник, при этом есть возможность запускать такой батник в скрытом виде.
     
     
     
     
    Добавлено:
    Levitant

    Цитата:
    А как сделать проверку каждые 10 минут, если не запущено подключение, то запускать его.

    Страницы 4-5 назад как раз была эта задача.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:41 18-05-2007
    Maza Faka



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

    Цитата:
    А как сделать проверку каждые 10 минут, если не запущено подключение, то запускать его


    Код:
     
    @Echo off
    :dial_
    ipconfig | Find /i "haz 2">nul || rasphone -d "haz 2"
    ping -n 601 -w 1000 127.0.0>nul
    goto :dial_
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 20:06 18-05-2007 | Исправлено: Maza Faka, 20:08 18-05-2007
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru