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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    garri671



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!
    Подскажите, есть команда psloggedon.exe -l username
    показывает на каком компе в домене работает пользователь
    Как сделать что бы команда со списком работала?
    psloggedon.exe -l @user.txt
    не работает

    Всего записей: 133 | Зарегистр. 18-07-2007 | Отправлено: 15:00 07-10-2009
    01MDM



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

    Код:
     
    @echo off
    for /f "tokens=*" %%i in (user.txt) do 2>nul psloggedon -l %%i
     

    Не проверял, "2>nul" чтоб скрыть шапку - вроде для всех утилит PSTools должно работать.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:28 07-10-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Никто не подскажет, что за файлы file_id.diz (и что означает (семантически) расширение *.diz)?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 16:59 07-10-2009 | Исправлено: mugil_cephalus, 17:00 07-10-2009
    noiseless

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Вот на WIKI ссылка
    А вообще вопрос не в тему

    Всего записей: 182 | Зарегистр. 06-02-2006 | Отправлено: 17:13 07-10-2009
    mugil_cephalus

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

    Цитата:
    Вот на WIKI ссылка

    да в голову не пришло, что инфа может быть в инетэнциклопедиях и faq'akh - казалось не столь это значительно, чтоб в ресурсах уделять этому внимание (это ж не phishing, WYSIWYG, exploit, spacebar etc.)

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 17:42 07-10-2009
    Greay



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

    Код:
    @echo off
    echo Y|del *.bak

    удаляет все файлы *.bak  из своей директории.
    Как написать что бы удаляла на всём компе/на определённом разделе?
    Спасибо.

    Всего записей: 254 | Зарегистр. 09-05-2004 | Отправлено: 18:35 07-10-2009 | Исправлено: Greay, 18:36 07-10-2009
    amnon10



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Товарищи, помогите пожалуста.
    Всю голову уже сломал.
    Нужно получить время создания и время модификации файла
    и сравнить их - если одинаковые то 1 иначе 2.
    время модификации  вроде так можно %~tI
    а вот время создания, а потом еще сравнить..
    мой ограниченный моск не смог постичь

    Всего записей: 85 | Зарегистр. 23-04-2003 | Отправлено: 20:01 07-10-2009
    BVV63



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

    Цитата:
    echo Y|del

    А это зачем? У команды же есть ключ /Q.

    Цитата:
    Как написать что бы удаляла на всём компе/на определённом разделе?

    А простая конструкция
    DEL /Q /S <Раздел:>\*.bak
    (и так по-очереди для всех разделов) Вас из-за чего-то не устраивает?

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 06:13 08-10-2009 | Исправлено: BVV63, 06:56 08-10-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    for /f "tokens=*" %%i in ('dir /b /a') do call:1 "%%i" "%%~ti"
    goto:eof
     
    :1
    2>nul pushd %1 && (popd & set "search=\.\.") || (set "search=[0-9]:[0-9]")
     
    for /f "tokens=1,2" %%i in ('dir /a /t:c %1 ^| findstr "%search%"') do (
        echo %1
        echo creation:       %%i %%j
        echo modification: %~2
        echo.
    )
     

     
    Остается только сравнить "%~2" и "%%i %%j"
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:34 08-10-2009 | Исправлено: 01MDM, 09:37 08-10-2009
    mrCrowley

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как через батник переименовать файл, прицепив к названию дату и время создания (модификации)?  
    test.txt > test_011208_12_37.txt
    Спасибо

    Всего записей: 164 | Зарегистр. 18-02-2005 | Отправлено: 10:44 08-10-2009
    oshizelly



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, можно ли написать Bat-файл под Windows XP для смены из командной стргоки текущего разрешения экрана на заданное?
    Спасибо!

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 12:12 08-10-2009 | Исправлено: oshizelly, 14:32 08-10-2009
    01MDM



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

    Код:
     
    nircmdc setdisplay  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:42 08-10-2009
    Greay



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

    Цитата:
    @echo off
    echo Y|del *.bak
     
    удаляет все файлы *.bak  из своей директории.
    Как написать что бы удаляла на всём компе/на определённом разделе?
    Спасибо.

     

    Цитата:
    А простая конструкция
    DEL /Q /S <Раздел:>\*.bak
    (и так по-очереди для всех разделов) Вас из-за чего-то не устраивает?  

     
    Спасибо. Подходит.
     
    А как реализовать что бы файлы не удалялись а переименовывались в другое расширение. Например *.docx, *.doc в *.bak
    Спасибо.

    Всего записей: 254 | Зарегистр. 09-05-2004 | Отправлено: 14:00 08-10-2009 | Исправлено: Greay, 14:01 08-10-2009
    wolf0425



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

    Цитата:
    Подскажите, как через батник переименовать файл, прицепив к названию дату и время создания (модификации)?  
    test.txt > test_011208_12_37.txt  

    рекомендую все-же формат test_20081201_12_37.txt - чтоб сортировка по времени и по имени совпадала. Не понравится - сам переставишь/урежешь.

    Код:
    call :_ren test.txt
    goto :eof
     
    :_ren
    set "_time=%~t1"
    ren "%~1" "%~n1_%_time:~6,4%%_time:~3,2%%_time:~0,2%_%_time:~11,2%_%_time:~14,2%%~x1"
    goto :eof
    это время модификации, со временем создания извращаться придется сильнее.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 14:43 08-10-2009 | Исправлено: wolf0425, 14:44 08-10-2009
    oshizelly



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Цитата:
    Утилита NirCmd умеет это делать.

    Точно, самое оно! Сделал себе пару ярлыков на дестоп, получилось довольно удобно. Кстати, очень могучая утилита, она многое другое тоже умеет. Всем рекомендую. Спасибо!
     

    Всего записей: 6524 | Зарегистр. 18-09-2004 | Отправлено: 15:16 08-10-2009
    mrCrowley

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2 wolf0425
    Супер! Спасибо. А вот если с несколькими файлами такое проделать одновременно?..
     
    test01.txt > test_20081201_12_37.txt
    test02.txt > ?
    test03.txt > ?
    test04.txt > ?  
    ...........
     
    при этом чтобы названия не конфликтовали.. или посекундно учитывается

    Всего записей: 164 | Зарегистр. 18-02-2005 | Отправлено: 16:26 08-10-2009
    Greay



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Жду... (мне срочно)

    Всего записей: 254 | Зарегистр. 09-05-2004 | Отправлено: 17:00 08-10-2009 | Исправлено: Greay, 17:01 08-10-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mrCrowley
    Цитата:
    или посекундно учитывается
    посекундно -  плохой вариант, если минуты совпали -то и секунды совпасть могут. делаем сразу счетчик.
    Код:
    @echo off
    set "_name=test"
    for /f "delims=" %%a in  ('dir /b /a-d "%_name%*.txt"') do call :_ren "%%a"
    goto :eof
     
    :_ren
    set "_time=%~t1"
    set "_new=%_name%_%_time:~6,4%%_time:~3,2%%_time:~0,2%_%_time:~11,2%_%_time:~14,2%"
    ren "%~1" "%_new%%~x1" 2>nul && goto :eof
    set counter=1
    :_search
    set /a counter += 1
    if exist  "%_new%_(%counter%)%~x1" goto :_search
    ren "%~1" "%_new%_(%counter%)%~x1"
    goto :eof

     
    Добавлено:
    Greay почитай for /?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 18:32 08-10-2009 | Исправлено: wolf0425, 20:31 08-10-2009
    toshanNEW



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

    Код:
    route print
     
    Interface List
    0x1 ........................... MS TCP Loopback interface
    0x2 ...00 11 11 34 56 01 ...... VIA Rhine III Compatible Fast Ethernet Adapter -  Packet Scheduler Miniport

    0x20004 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface
     

    затем 0x20004 надо вставить в следующую комманду:

    Код:
    route add 192.168.90.0 mask 255.255.255.0 172.17.241.1 if 0x20004

     
    либо может можно придумать более изящное решение по прописыванию маршрутов?

    Всего записей: 67 | Зарегистр. 20-09-2005 | Отправлено: 00:22 09-10-2009 | Исправлено: toshanNEW, 00:24 09-10-2009
    PLAYYOB



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно автоматизировать вот такой процесс:
     
    D:\folder_X\folder_Y    - copy
    D:\folder_Z\folder_Y    - paste (с заменой всех файлов)
    D:\folder_V\ xyz.exe    - run
     
    Т.е. Нужно скопировать папку из одной директории в другую с заменой всех файлов и после этого запустить exe файл.  
     
    Как этого сделать?
    Ничего подобного ранее не делал, поэтому если не затруднит подробно описать процесс.
     
    Спасибо.

    ----------
    English Room
    _
    Изучаем иностранный язык играя!

    Всего записей: 7216 | Зарегистр. 21-03-2007 | Отправлено: 03:20 09-10-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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru