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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    igor_andreev

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

    Цитата:
    Поскольку никто не отвечает,

    Было это уже просто, если почитаешь предыдущие ветки по батникам - найдешь

    Цитата:
    не нравится в первую очередь постоянное обращение к find.exe, да и петля

    Задача не стоит, я думаю, сделать все стандартными средствами ОС? Раз уж поставил такую "дуру", как файнридер, скачай еще архивчик на 40 Kb
    http://www.teamcti.com/pview/pv_5_2_2.zip
    у pv.exe есть опция -x(дождаться окончания процесса) или -xa(всех процессов)

    Код:

    @echo off
    echo wait for "notepad" process complete
    pv -xa notepad.exe
    echo all notepads closed
    pause

     
     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 06:11 07-01-2009
    kirik64



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

    Цитата:
    если почитаешь предыдущие ветки по батникам - найдешь

    500+ страниц. Я уж лучше у Роба ван дер Вуде посмотрю...
    За утилитку спс, интересная, пригодится... Просто из спортинтереса хотелось

    Цитата:
    сделать все стандартными средствами ОС

     

    Всего записей: 2317 | Зарегистр. 11-12-2006 | Отправлено: 12:15 07-01-2009
    Rotorina



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Обращался с просьбой, никто не отреагировал...
    Разобрался со своей задачей частично, но не могу выполнить следующее:

     
    -  как скопировать из каталога№1 самый свежий файл в другой каталог№2 и удалить при этом из каталога №2 файлик, который был скопирован прошлый раз.
    Файлы имеют вид 1cBackUp_yymmddhhmin.rar (Например: 1cBackUp_200901051200.rar)

    Всего записей: 109 | Зарегистр. 03-08-2007 | Отправлено: 12:32 08-01-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rotorina
    Код:
    for %%a in (dir/b "каталога№1\*.rar") do copy "каталога№1\%%a" "каталога№2\"&@echo %%a>f.log
    for /f "delims=" %%a in (f.log) do del/q "каталога№2\%%a"

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:05 08-01-2009 | Исправлено: Nagual, 18:29 08-01-2009
    Rotorina



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Создал два каталога 11 ( в каталоге 11 два файла: 1cBackUp_200901061200.rar; 1cBackUp_200901051200.rar) и 22, запускаю батник:

    Код:
    for %%a in (dir/b "11\*.rar") do copy "11\%%a" "22\"&@echo %%a>f.log  
    for /f "delims=" %%a in (f.log) do del/q "22\%%a"

     
    Выдает следующее:

    Код:
    D:\>copybat.bat
    D:\>for %a in (dir/b "11\*.rar") do copy "11\%a" "22\"  &
    D:\>copy "11\dir/b" "22\"  &
    Системе не удается найти указанный путь.
    D:\>copy "11\11\1cBackUp_200901051200.rar" "22\"  &
    Системе не удается найти указанный путь.
    D:\>copy "11\11\1cBackUp_200901061200.rar" "22\"  &
    Системе не удается найти указанный путь.
    D:\>for /F "delims=" %a in (f.log) do del/q "22\%a"
    D:\>del/q "22\11\1cBackUp_200901061200.rar "
    Не удается найти указанный файл.

    Содержимое файла: f.log: 11\1cBackUp_200901061200.rar

    Всего записей: 109 | Зарегистр. 03-08-2007 | Отправлено: 08:56 09-01-2009 | Исправлено: Rotorina, 09:14 09-01-2009
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rotorina
     
    Видимо, Nagual очень спешил, когда писал тебе код
    Вот мой вариант:

    Код:
     
    @echo off
    for /f "tokens=*" %%a in ('dir /b /o-d /tc "[дир1]\1cBackUp_*.rar"') do set "fname=%%a" & goto next
    :next
    copy "[дир1]\%fname%" "[дир2]\">nul
    for /f  "skip=1 tokens=*" %%a in ('dir /b /o-d /tc "[дир2]\1cBackUp_*.rar"') do del "[дир2]\%%a" & goto :EOF
     

    По идее - все должно работать. Проверить сейчас не могу.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:18 09-01-2009
    Commfort191

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Видел одну задачу поменять в файле test.ini определенные строки, но решения готового так и не нашел, вот задача:
    по пути %USERPROFILE%\Application Data\Prog\Config
    имеется файл test.ini
    в данном файле требуется изменить:
    [Main]
    Server_address=192.168.0.1
    Server_port=1111
     
    на
    [Main]
    Server_address=192.168.0.2
    Server_port=2222
     
    как с помощью батника такое сделать ??

    Всего записей: 30 | Зарегистр. 27-02-2008 | Отправлено: 06:52 10-01-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Commfort191
    С помощью gsar.exe:

    Код:
     
    @echo off
    pushd "%USERPROFILE%\Application Data\Prog\Config"
    gsar -s"Server_address=192.168.0.1" -r"Server_address=192.168.0.2" -o test.ini
    gsar -s"Server_port=1111" -r"Server_port=2222" -o test.ini
    popd
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:58 10-01-2009
    Commfort191

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

    Цитата:
    Commfort191
    С помощью gsar.exe:
     
    Код:
     
    @echo off
    pushd "%USERPROFILE%\Application Data\Prog\Config"
    gsar -s"Server_address=192.168.0.1" -r"Server_address=192.168.0.2" -o test.ini
    gsar -s"Server_port=1111" -r"Server_port=2222" -o test.ini
    popd
     

     
    странно . но никаких изменений не произошло ((

    Всего записей: 30 | Зарегистр. 27-02-2008 | Отправлено: 17:50 10-01-2009
    johnmar



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужна программа наподобие FileDisk, чтобы монтировать виртуальные диски из командной строки (FileDisk не поддерживает образы CD/DVD в UDF, в остальном полностью устраивает)

    Всего записей: 30 | Зарегистр. 28-03-2008 | Отправлено: 18:40 10-01-2009
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    johnmar
    В Alcohol - есть утилита комм.строки

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 18:51 10-01-2009
    NIKZZZZ



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

    Цитата:
    Нужна программа наподобие FileDisk, чтобы монтировать виртуальные диски из командной строки

    Daemon Tools

    Код:
    ".....\daemon.exe" -mount  0, file.iso

     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:27 10-01-2009 | Исправлено: NIKZZZZ, 19:30 10-01-2009
    01MDM



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

    Цитата:
    странно . но никаких изменений не произошло ((

     
    А сам gsar.exe есть? Если есть, то он должен находиться в одном из каталогов, указанных в переменной %PATH%, либо рядом с батником.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:41 10-01-2009 | Исправлено: 01MDM, 19:45 10-01-2009
    gbcfkf



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    День добрый
    Спрошу тут..
    Есть ли консольная программа для смены ключа Win XP по сети?
    А то очень не хочется бегать по всем компам и менять ключ WinKeyLite'ом

    Всего записей: 702 | Зарегистр. 17-10-2006 | Отправлено: 05:04 11-01-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    праздники, однако
    Rotorina
    поправил код
    Код:
    if exist f.log for /f "delims=" %%a in (f.log) do del/q "22\%%a"
    for %%a in (dir/b "11\*.rar") do set fn=%%~nxa
    echo %fn%
    >f.log
    copy "11\%fn%" "22\"
     

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 07:47 11-01-2009 | Исправлено: Nagual, 07:51 11-01-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    А можа так?
    for %%a in ('dir/b "11\*.rar"')

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:47 11-01-2009
    jaguarkpi

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста с решением проблемы:
    Извиняюсь, если такое было. В пакетном файле нужно по результату комманды ping выполнить определенные действия
    Пробовал так:
     
    ping -n 1 xxx.xxx.xxx.xxx
    If errorLevel 0 (.........)
    If errorLevel 1 (.........)
     
    Но почему-то при этом команда ping зацикливается, и просто запускается н-ное количество раз, при этом не пингует, и потом закрывается.
     
    Тоесть то, что описано по ссылке http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=220#18 у меня не работает, вернее пинг запускается бесконечно пока не выскакивает сообщение, что стек переполнен, и останавливается выполнение пакетного файла.
     
    Пробовал через start ping, но тогда открывается безконечное количество окон консоли.
     
    Тоесть вопрос в том, что почему в консоли, если ввести ping xxx.xxx.xxx.xxx от руки, то все происходит нормально, а если это записать в пакетный файл, то ping зацикливается?
     
    Кстати такое-же происходит и с коммандой ftp, но там я решил все через start.
     
    Windows XP SP3

    Всего записей: 3 | Зарегистр. 11-01-2009 | Отправлено: 15:20 11-01-2009 | Исправлено: jaguarkpi, 15:47 11-01-2009
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jaguarkpi
     
    ping *.*.*.* -n 10 || если не выполнено условие && если выполнено условие

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 15:40 11-01-2009
    Elroir



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

    Код:
     
    ping -n 1 xxx.xxx.xxx.xxx | find /i "TTL=">nul  
    If not errorLevel 1 (  
    :: commands to be executed if errorlevel = 0  
    .........
    .........) else (  
    :: commands to be executed if errorlevel >=1
    .........
    .........)
     


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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вы не поняли, дело в том, что после выполнения комманды ping в пакетном файле, следующие комманды после этой уже не выполняются, так как выполнение пакетного файла прерываестся в связи с превышением размера стека. Тоесть я о том, что в чем может быть проблема такого поведения комманды ping - запуска бесконечное число раз подряд, как будто она снова и снова вызывает сама себя?
    Вот результат выполнения такого вот батника:
    ping -n 1 ххх.ххх.ххх.ххх
    If errorLevel 0 (echo Сеть ВКЛЮЧЕНА)
    If errorLevel 1 (echo Сеть ВЫКЛЮЧЕНА)
    pause
     
    *****
    ping -n 1 ххх.ххх.ххх.ххх
    ping -n 1 ххх.ххх.ххх.ххх
    ping -n 1 ххх.ххх.ххх.ххх
    ping -n 1 ххх.ххх.ххх.ххх
    ...
    ping -n 1 ххх.ххх.ххх.ххх
    и тут пишется, что стек переполнен и выполнение пакетного файла остановлено
     
    Варианты Elroir и Mr_Hat дают аналогичный результат, разве что при >Nul на экран ничего не выводится

    Всего записей: 3 | Зарегистр. 11-01-2009 | Отправлено: 15:55 11-01-2009 | Исправлено: jaguarkpi, 16:47 11-01-2009
       

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