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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    koshara1980

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как в батнике убрать последний слэш \ в параметре %1?
    Использую батник, которому Тотал передаёт %P, но CDImage.exe нужен путь без слэша, иначе ISO-образ не создаётся...

    Всего записей: 2 | Зарегистр. 30-06-2009 | Отправлено: 02:42 09-02-2010
    vtlseeker



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    set a=%1
    echo %a:~0, -1%
     
    Добавлено:
    2 koshara1980

    Всего записей: 386 | Зарегистр. 03-03-2009 | Отправлено: 03:51 09-02-2010
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пдскажите где ошибка.
     
    есть батник для проверки наличия обновлений фильтров для блокировщика рекламы Ad Muncher

    Код:
    @echo on
    if not exist "C:\Program Files (x86)\Ad Muncher\">nul goto :error
    if not exist "C:\Users\AnyKey\AppData\Local\Temp\AM*.adl">nul goto :EOF
    taskkill /f /im "AdMunch.exe" /t
    ren C:\Users\AnyKey\AppData\Local\Temp\AM*.adl AM.adl
    move /y "C:\Users\AnyKey\AppData\Local\Temp\AM.adl" "C:\Program Files (x86)\Ad Muncher"
    cd /d "C:\Program Files (x86)\Ad Muncher"
    start AdMunch.exe
    exit
    :error
    reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Update_AdMuncher_Filter" /f
    reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Ad Muncher" /f
    del /f /q C:\Windows\Utils\Update_AdMuncher_Filter.bat

     
    все в принципе работает, но по окончанию работы не стартует сама прога,
    На XP работало, а вот на 7ке не желает полностью отрабатывать все условия.
    в часности стартовать прогу после успешной замены файла фильтров.
     
    В действительности получается что если принудительно запускать батник - все работает,
    а если как задумано при логоне пользователя то старт не происходит

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 20:35 09-02-2010 | Исправлено: Mr_Hat, 20:37 09-02-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как передать в буфер обмена значение переменной не создавая текстового файла?
    нашёл
    http://www.petri.co.il/software/clip.zip

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:38 10-02-2010 | Исправлено: king_stiven, 12:20 10-02-2010
    Vebsea

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите плз, есть проблема, сказали повторить тут:
    Есть код:  
    ftp -s:1.txt  
    1.txt:  
    open xxx.xxx.xxx.xxx  
    Login  
    Password  
    mkdir ck  
    cd ck  
    LCD C:\  
    Теперь, мне нужно передать некий файл 1.rar с диска C на ФТП в каталог CK  
    Команда "Send" и "Put" не работает. Пишет:  
    "I won't open a connection to 0.0.0.0(only to 195.138.xxx.xxx(ну там мой IP))"  
    Как это решить? Все остальные FTP-клиенты нормально зхаходят и перекидывают.

    Всего записей: 10 | Зарегистр. 12-09-2008 | Отправлено: 15:13 10-02-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Vebsea
    literal PASV
    send 1.rar

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:17 10-02-2010 | Исправлено: wolf0425, 18:22 10-02-2010
    Vebsea

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

    Всего записей: 10 | Зарегистр. 12-09-2008 | Отправлено: 18:29 10-02-2010
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Vebsea
    Должна работать команда PUT. Только что проверил на подобном примере.
     
    Кстати, для того, чтобы не создавать отдельный файл с командами FTP, а использовать один только cmd-файл:
     

    Цитата:
    @ECHO OFF
    MORE /e +8 < %~nx0 > tmp
    FTP -s:tmp
    DEL tmp
    EXIT /b
     
    :: FTP commands
     
    open 192.168.1.201
    login
    password
    ..
    bye

    Цифра 8 в команде "MORE /e +8 < %~nx0 > tmp" означает число строк, после которых начинаются команды FTP

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 20:49 10-02-2010
    Vebsea

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

    Цитата:
    @ECHO OFF
    MORE /e +6 < %~nx0 > tmp
    FTP -s:tmp
    DEL tmp
    EXIT /b
    ::FTP Commands
    open 195.216.243.32
    x
    x
    literal PASV
    mkdir ck
    cd ck
    put C:\1.rar
    pause

    Ни в пассивном режиме, ни так.

    Всего записей: 10 | Зарегистр. 12-09-2008 | Отправлено: 21:01 10-02-2010 | Исправлено: Vebsea, 21:02 10-02-2010
    cluster

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

    Цитата:
    put C:\1.rar  

    А если так:
     
    LCD C:\
    put 1.rar

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 21:29 10-02-2010
    r00tik



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    for /f "skip=4 tokens=2,*" %%i in ('reg query "HKCU\software\microsoft\windows\currentversion\explorer\shell folders" /v desktop') do set desktop=%%j
    for /f "skip=2 tokens=2,*" %%i in ('reg query "HKCU\software\microsoft\windows\currentversion\explorer\shell folders" /v desktop') do set desktop=%%j
    echo %desktop%
    Подскажите как заставить работать через ERRORLEVEL если в первом случае не удалось получить путь к рабочему столу(винхп) обработать второй и получить его (виста/7)

    Всего записей: 45 | Зарегистр. 17-11-2006 | Отправлено: 23:56 10-02-2010
    wolf0425



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

    Цитата:
    Подскажите как заставить работать через ERRORLEVEL если в первом случае не удалось получить путь к рабочему столу(винхп) обработать второй
    А смысл через ERRORLEVEL что-то ловить?
    просто в первый for впиши после сета goto на выход
     
    или вообще убери skip и отдельный for для w7, а нужную строчку лови через ^|find :

    Код:
    for /f "tokens=2*" %%i in ('reg query "HKCU\software\microsoft\windows\currentversion\explorer\shell folders" /v desktop ^|find /i "desktop"') do set "desktop=%%j"
    echo %desktop%  

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 00:26 11-02-2010 | Исправлено: wolf0425, 00:36 11-02-2010
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    r00tik
    А не хочешь через "IF exist" сделать?

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 00:28 11-02-2010
    Vebsea

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

    Всего записей: 10 | Зарегистр. 12-09-2008 | Отправлено: 01:35 11-02-2010
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Vebsea
    В общем, проблема не у тебя, а на "том" конце. А там скорее всего стоит pure-ftpd. В сети советуют обновить pure-ftpd до версии 1.0.22 (released on April 27, 2009) и выше.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 09:10 11-02-2010
    Vebsea

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cluster
    Да, именно он.
    Ладно, буду разбиратьс с укозом
    Спасибо всем!

    Всего записей: 10 | Зарегистр. 12-09-2008 | Отправлено: 16:14 11-02-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос скорее теоретический:
    есть файл со строками, каждая строка - с позиционной записью, допустим
    DDMMYYYYFFXX
     
    Возможно ли на bat-файлах распарсить ее (т.е. записать в переменную значения с позиции А по позицию Я)?

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 21:09 11-02-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga
    Что значит с "позиционной записью"?
    Строку можно обрезать. Например:

    Код:
     
    set "string=DDMMYYYYFFXX"
    echo %string:~4,4%
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:16 11-02-2010 | Исправлено: 01MDM, 21:25 11-02-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM,
    "с позиционной записью", когда, например:
    дата хранится в символах (знакоместах) с позициями 1-2
    месяц - 3-4
    год - 6-9
    индекс1 - 10-11
    индекс2 - 12-13
     
    т.е. визуально это выглядит как одна строка (разделителей нет, смысл цифры зависит от ее позиции)
     
    PS
    ваш вариант "с обрезанием" строки подходит, спасибо

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 23:18 11-02-2010
    Ortios



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли поток от одной команды перенаправить на вход другой команды, если поток не 1? Например:
    sed.exe 2>1.txt
    type 1.txt | findstr /N /C:E-mail >2.txt
    Т.е. это надо сделать без создания промежуточного файла 1.txt

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 20:39 12-02-2010
       

    Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru