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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    boy999
    Вот командный файл для твоей задачи. Сохрани этот код в файл cmd или bat, положи в каталог "S:\Lula 3D" и оттуда запускай
     
    Файл 1.cmd

    Код:
    @echo off
    for /f %%i in ('dir /b /s /ad') do if exist %%i\Lula_clothes.dds copy c:\Lula_clothes.dds /y %%i

     
    Добавлено:
    Если временно переименуешь каталог "Lula 3D" в безпробельное имя, то всё получится.
    Не сумел побороть косяк с пробелами в путях. Кавычки ставил где только мог.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 20:30 26-05-2010
    wolf0425



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

    Цитата:
    Вот командный файл для твоей задачи.
    а лучше вот:

    Код:
    @echo off
    pusd "s:\Lula 3D"
    for /f "delims=" %%i in ('dir /b /s /a-d Lula_clothes.dds') do copy /y c:\Lula_clothes.dds "%%~fi"
     

     
    Добавлено:

    Цитата:
    Не сумел побороть косяк с пробелами в путях. Кавычки ставил где только мог.
    в конце забыл

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:53 26-05-2010 | Исправлено: wolf0425, 21:03 26-05-2010
    boy999



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

    Цитата:
    @echo off  
    pusd "s:\Lula 3D"  
    for /f "delims=" %%i in ('dir /b /s /a-d Lula_clothes.dds') do copy /y c:\Lula_clothes.dds "%%~fi"

     
     
    Сработало........
    но игра не запускаеццо:
    Переставлять буду.....

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 00:33 27-05-2010
    Olegfan

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

    Всего записей: 44 | Зарегистр. 01-10-2009 | Отправлено: 07:04 27-05-2010
    wolf0425



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

    Цитата:
    Подскажите плиз, такая задача - нужно удалять файлы по расширению в папке и всех её подпапках.  
    del /?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 07:54 27-05-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Тьфу, забыл в цикле указать что ищем: Lula_clothes.dds
    Olegfan
    А если точнее, DEL /S filename.ext

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 09:05 27-05-2010 | Исправлено: Joo1z, 09:07 27-05-2010
    boy999



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Замена везде сработала, но труселя не исчезли

    Передок ток улучшился, хи-хи....
     
     
    Винда щас глючит, виснет и вырубать её приходится кнопкой резет, а это ж здоровья винде не прибавляет....
     
    Батничег можно, на резет и отмену выключения\резета!?

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 12:31 27-05-2010
    sjsash

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток уважаемы експерты, нужна ваша помощь в написании bat-ника.  
     
     Суть задачи с комп1\експорт\ передать все файлы xml на комп2\импорт\ через  
    \\сервер\xml\ двумя bat-никами.  
     
       1.bat: копирует с комп1 на сервер запускается с комп1  
       2.bat: копирует с сервер на комп2 запускается с комп2  
       Имена файлов при каждом експорте меняются (название таблици; время; дата)  
     
    Условия:  
    1. шарить комп1 и комп2 в сети нельзя  
    2. 1.bat проверяет есть ли файлы *.xml на комп1\експорт\*.xml если есть - копирует на  
        \\сервер\xml\*.xml, ПОСЛЕ копирования с комп1 на сервер провести сравнение файлов,  
        если повреждений нет - удалить оригиналы.  
    3. 2.bat проверяет есть ли на \\сервер\XML\*.xml xml файлы с атрибутом архивный,  
        если есть - копирует все xml файлы с атрибутом архивный на комп2\импорт\*.xml,  
        ПОСЛЕ копирования с сервера на комп2 провести сравнение файлов, если повреждений  
        нет - снимает атрибут архивный с файлов на сервере.  
    4. Файлы должны остатся на сервере как резервные копии и удаляются раз в 3 месяца  
        вручную.  
    5. Хотелось бы видеть в процесе работы на экране результаты выполнения команд  
        bat-никами (отсутствие файлов на комп1 или атрибута файлов на сервер, ошибки-какие или все норм  и т.д.)  
     
    Трудности у меня вызывают три момента:  
    1)   ПОСЛЕ копирования с комп1 на сервер провести сравнение файлов  
    2)   2.bat проверяет есть ли на \\сервер\XML\*.xml xml файлы с атрибутом архивный,    
        если есть - копирует все xml файлы с атрибутом архивный на комп2\импорт\*.xml,    
        ПОСЛЕ копирования с сервера на комп2 провести сравнение файлов, если повреждений    
        нет - снимает атрибут архивный с файлов на сервере.  
    3)   в процесе работы на экране результаты выполнения команд bat-никам  
        (отсутствие файлов на комп1 или атрибута файлов на сервер, ошибки-какие или все норм  и т.д.)
     
    Ну вроде все описал. Если что не понятно с удовольствием отвечу.  
     
    Заранее спасибо.

    Всего записей: 14 | Зарегистр. 13-11-2009 | Отправлено: 12:44 27-05-2010 | Исправлено: sjsash, 12:48 27-05-2010
    Sustaw

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

    Цитата:
    Вопрос такой: как постоянно, через .bat удалять директории с файлами, если названия директорий каждый раз разные, оставляя директории, срок создания которых менее 3 дней? Примеру скрипта был бы очень рад.

    Цитата:
    можно тупо - имена директориям давать в формате yyyy-mm-dd
    после чего отсортировать по имени и удалять начиная с четвертой...

     
    можно все таки пример скрипта для удаления? А то весь день голову ломаю
     

    Цитата:
    mkdir "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"
    move c:\dirname3\*.* "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"

    Всего записей: 6 | Зарегистр. 25-05-2010 | Отправлено: 16:23 27-05-2010 | Исправлено: Sustaw, 16:24 27-05-2010
    cluster

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

    Цитата:
    Батничег можно, на резет и отмену выключения\резета!?

    shutdown /?

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 16:44 27-05-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sustaw
    Тебе ссылку в шапку давали.  
     
    Добавлено:

    Цитата:
    можно тупо - имена директориям давать в формате yyyy-mm-dd  
    после чего отсортировать по имени и удалять начиная с четвертой...

    То есть ты делаешь каждый день по папке? Тогда можно через  dir /t:c /a:d /s /b

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:04 27-05-2010
    koddy



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Нужно из ipconfig выцепить один адрес.
    Пытаюсь сделать это так:

    Код:
     
    for /f "tokens=1* delims=:. " %%a in ('ipconfig ^| find /i "1.8"') do set GATE=%%b
     
    echo %GATE%
     

    Получаю

    Цитата:
     
    C:\Documents and Settings\user>"C:\Program Files\VPNDialerSet\111.bat"
     
    C:\Documents and Settings\user>for /F "tokens=1* delims=:. " %a in ('ipconfig |
    find /i "1.8"') do set GATE=%b
     
     :\Documents and Settings\user>set GATE=1.8.16.139
     
     :\Documents and Settings\user>set GATE=шлюз . . . . . . . . . . : 1.8.16.139
     
    C:\Documents and Settings\user>echo шлюз . . . . . . . . . . : 1.8.16.139
    шлюз  . . . . . . . . . . : 1.8.16.139
     

    ipconfig

    Цитата:
     
    Подключение по локальной сети - Ethernet адаптер:
     
            DNS-суффикс этого подключения . . :
            IP-адрес  . . . . . . . . . . . . : 192.168.1.4
            Маска подсети . . . . . . . . . . : 255.255.255.0
            Основной шлюз . . . . . . . . . . : 192.168.1.1
     
    Подключение по локальной сети 2 - Ethernet адаптер:
     
            Состояние сети  . . . . . . . . . : сеть отключена
     
    byfly-guest - PPP адаптер:
     
            DNS-суффикс этого подключения . . :
            IP-адрес  . . . . . . . . . . . . : 1.8.16.139
            Маска подсети . . . . . . . . . . : 255.255.255.255
            Основной шлюз . . . . . . . . . . : 1.8.16.139
     

    Странно, что раньше скрипт(это только одна строка из всего) работал.
    1.8.*.* мне и надо выцепить. Он одинаковый в адресе и и шлюзе.

    Всего записей: 398 | Зарегистр. 14-04-2003 | Отправлено: 23:48 27-05-2010
    Olegfan

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Joo1z
    Действительно, забыл про этот ключик, сенкс!

    Всего записей: 44 | Зарегистр. 01-10-2009 | Отправлено: 01:10 28-05-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sustaw
    Цитата:
    можно все таки пример скрипта для удаления? А то весь день голову ломаю

    Код:
    mkdir "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"
    move c:\dirname3\*.* "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"  
     

    как-то так:
    Код:
    @echo off
    mkdir "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"
    move c:\dirname3\*.* "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"  
     
    for /f "skip=3 delims=" %%a in ('dir /b /ad /o-n "C:\dirname1\dirname2\" ^| findstr /r /b /c:"[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"') do echo rd /q /s "C:\dirname1\dirname2\%%~a"
    проверь что хочет правильно удалять, после чего убери echo  
    если посторонних каталогов в dirname2 точно нет - то танцы с бубном ( ^| findstr ...) там немного лишние, но случай бывает всякий...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 02:14 28-05-2010 | Исправлено: wolf0425, 02:52 28-05-2010
    nNau



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    koddy
    Попробуйте в перечислении delims убрать точку, оставьте только двоеточие.
    Или задайте tokens=2*

    Всего записей: 83 | Зарегистр. 13-05-2004 | Отправлено: 06:49 28-05-2010 | Исправлено: nNau, 07:04 28-05-2010
    Sustaw

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

    Цитата:
    @echo off
    mkdir "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"
    move c:\dirname3\*.* "C:\dirname1\dirname2\%date:~6,4%%date:~3,2%%date:~0,2%\"  
     
    for /f "skip=3 delims=" %%a in ('dir /b /ad /o-n "C:\dirname1\dirname2\" ^| findstr /r /b /c:"[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"') do echo rd /q /s "C:\dirname1\dirname2\%%~a"  

     

    Цитата:
    проверь что хочет правильно удалять, после чего убери echo  
    если посторонних каталогов в dirname2 точно нет - то танцы с бубном ( ^| findstr ...) там немного лишние, но случай бывает всякий...

     
    все работает, огромное спасибо!

    Всего записей: 6 | Зарегистр. 25-05-2010 | Отправлено: 08:58 28-05-2010 | Исправлено: Sustaw, 09:09 28-05-2010
    Akela50

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По поиску и в факах шапки, к сожалению, не нашёл...
     
    У меня WinXP-SP3.
     
    Хотелось бы - иметь 2 батника, на которые я сделаю 2 ярлыка в панели Быстрого запуска (для семейства, они-чайники мелкие):
     
    1. Перевод компьютера в спящий режим (ждущий не нужен). Без вопросов.
     
    2. Выключение компьютера. Без вопросов.
     
    У меня - стоит True Launch Bar. Но после обновления винды перестал работать его удобный плагин TurnOff, подвешивает всю ось. А то и не было бы просьбы. Сам я - давно забыл как сделать такие батники, мгновенного действия.
     
    Плиз - подскажите, где найти или - помогите.

    Всего записей: 175 | Зарегистр. 08-10-2007 | Отправлено: 09:54 28-05-2010 | Исправлено: Akela50, 09:57 28-05-2010
    sjsash

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите мне разобратся ктонибудь, плизззз !!!!
    http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=1440#9
    Уже 2 недели, то мороз, то гоняют по веткам форума. Вот и к вам направили и тут молчат .

    Всего записей: 14 | Зарегистр. 13-11-2009 | Отправлено: 09:56 28-05-2010 | Исправлено: sjsash, 10:04 28-05-2010
    nNau



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

    Цитата:
    1. Перевод компьютера в спящий режим (ждущий не нужен). Без вопросов.


    Код:
     
    rundll32.exe powrprof.dll,SetSuspendState Sleep
     


    Цитата:
    2. Выключение компьютера. Без вопросов.  


    Код:
     
    shutdown -s -f  
    или
    rundll32 shell32, SHExitWindowsEx 1
     

    Всего записей: 83 | Зарегистр. 13-05-2004 | Отправлено: 10:10 28-05-2010 | Исправлено: nNau, 10:32 28-05-2010
    boy999



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

    Цитата:
    shutdown /?

     
    Это на выключение, а егог и кнопкой можно вызвать.
    Резет на батнике нужен.
     

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 10:56 28-05-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