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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    alex52mail

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

    Цитата:
    NIKZZZZ  Задача слишком серьезная, что-бы решить ее reg файлом или батником, однако в продуктах TeraByte есть готовый скрипт для смены букв дисков.  
    Ради скрипта для такой задачи просмотрел шапку TeraByte,  загрузил и установил bootitbm_en_trial.zip и  ifw_en_trial.zip но наверное не так усердно искал и скрипта не нашел. А ко всем таким прибабахам личное отношение их ненужности.   Тут также устанавливал в -diff.vhd с EWF фильтром, без сохранения временного\лишнего.
    Все должно быть проще, только найти простое требует больших усилий, как наверное и тут.
     
    Тут операционная система уже перенесена и запускается и работает с новой буквы.  Но возникла проблема загрузки пользователя, встречавшая ранее не однократно при создании\модификации  wim.  Поэтому хочется в ней разобраться, и сформулировать вопрос так:
     
    Система загружается в новый рабочий стол и с голым экраном.   И при создании с новой буквы нового админ, его загрузка  идет, но опять в голый экран.
    При голом экране Cntr+Alt+Del запускаем taskmgr и через него любую оболочку типа BSExplorer,  totalcmd и система работает.
     
     1).  Где в Реестре, *.ini  исправить для нормальной загрузки системы ?
     
    2).  Что не так с загрузкой такой системы в новый рабочий стол при существующем пользователе ?  
    P.S.  Решено, меняет тут и система грузиться в старого пользователя  
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
     
     3).  Есть ли reg редактор чтобы в работающей системе без внешнего взлома хором заменить ВСЕ и ВЕЗДЕ  типа C:\ на  X:\  ?

    ----------
    Везде трудно первые 15 лет, потом легче.
    Все проблемы имеют ПРОСТОЕ решение
    Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

    Всего записей: 329 | Зарегистр. 04-09-2015 | Отправлено: 21:28 27-01-2018 | Исправлено: alex52mail, 23:23 27-01-2018
    NIKZZZZ



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex52mail
    Скрипт называется setwindl.tbs входит в пакет TeraByte OS Deployment Tool Suite , который в сбою очередь входит в состав TeraByte Image for Windows .

    Цитата:
    Тут операционная система уже перенесена и запускается и работает с новой буквы.  Но возникла проблема загрузки пользователя,

    Запускается и работает разные вещи, в данном случае, запускается, но не работает.
    Вы сломали систему, так, что вопросы один и два бессмысленны, разбирайтесь что сделали не так, когда ее правили.
    Редакторы есть, например jv16 позволяет сделать групповую замену в реестре, только не надейтесь, что это решит проблему.
    Вообще-то в данной ветке это

    Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 06:23 28-01-2018
    uncleShi



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex52mail
    Цитата:
    загрузил и установил bootitbm_en
    Есть у меня одна такая, для баловства, сделано через setwindl.tbs, всё нормально работает:

    *


    Всего записей: 2564 | Зарегистр. 29-05-2003 | Отправлено: 15:34 28-01-2018
    djdtyfhu



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Искал решение в предыдущих темах но не нашел.
     
    Задача:
     Есть корневая папка, в ней набор папок. В данных подпапках есть разное количество файлов.
     Каждый из файлов находящихся в корневой папке и подпапках надо запаковать в отдельные ZIP архивы с именем исходного файла, исходные  файлы после упаковки удалить.
     
    Подскажите как решить.

    Всего записей: 417 | Зарегистр. 28-12-2004 | Отправлено: 18:29 28-01-2018 | Исправлено: djdtyfhu, 21:41 28-01-2018
    Inoz2000



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

    Цитата:
    надо запаковать в отдельные ZIP архивы
    вам надо архиватор

    ----------
    Мы все умрём. (-:

    Всего записей: 2412 | Зарегистр. 23-04-2009 | Отправлено: 10:14 29-01-2018
    djdtyfhu



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

    Цитата:
    вам надо архиватор

     
    Стандартными средствами архиваторов это не делается.

    Всего записей: 417 | Зарегистр. 28-12-2004 | Отправлено: 13:39 29-01-2018
    LevT



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

     get-childitem  -Path 'C:\Folder' -Recurse -File | foreach { zip ... }
     
    если такой Powershell канает вместо батника, то можно уточнить что там в фигурных скобках
    Если система  - или хотя бы PS - достатчно новые, то используйте Compress-Archive

    Всего записей: 10726 | Зарегистр. 14-10-2001 | Отправлено: 13:47 29-01-2018
    RetroRocket



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

    Цитата:
    надо запаковать в отдельные ZIP архивы с именем исходного файла, исходные  файлы после упаковки удалить

    pack.cmd
    Код:
    if -%1==- goto end
    for /f "delims=" %%a in ('dir "%1" /a-d/b/s') do pkzip.exe -m %%~dpna.zip %%a  
    :end

    В качестве параметра указывается путь к обрабатываемому каталогу. Например, команда "pack.cmd c:\trash" переместит (с удалением) все файлы из каталога c:\trash и его подкаталогов в zip-архивы, названные по именам перемещаемых файлов.
    Архиватор pkzip.exe должен быть доступен через переменную %PATH% (или указать полный путь к нему в команднике).  
    Ограничения - если в одном каталоге будет несколько файлов с одинаковыми именами (и разными расширениями), то они упакуются в один архив с тем же именем. Не проверял для файлов/каталогов с пробелами/кириллицей. Использовал pkzip.exe версии 2.06 от 1994 года (другого не было под рукой).
     

    Всего записей: 537 | Зарегистр. 02-01-2018 | Отправлено: 14:10 29-01-2018 | Исправлено: RetroRocket, 14:27 29-01-2018
    djdtyfhu



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RetroRocket
     
    Спасибо за направление, в котором надо двигаться.
     
    Модифицировал под свою задачу следующим образом:

    Код:
     
    if -%1==- goto end
    for /f "delims=" %%a in ('dir "%1" /a-d/b/s') do winrar a -m5 -ep -df "%%~dpna.zip" "%%a"
    :end
     

     
    На вход подаю путь корневой папки.
    На выходе все файлы архивируются в свои архивы формата ZIP (использовать только WinRAR, т.к. в консольной версии RAR нет поддержки формата ZIP. После архивирования файлы удаляются.
     
    В данной версии файла необходимо, чтобы путь нахождения программы WinRAR был в переменной PATH, ну или указывать явный путь к файлу:

    Код:
     
    if -%1==- goto end
    for /f "delims=" %%a in ('dir "%1" /a-d/b/s') do "c:\Program Files\WinRAR\WinRAR.exe" a -m5 -ep -df "%%~dpna.zip" "%%a"
    :end
     

     
     
    Еще один вариант без использования параметров для bat файла:

    Код:
     
    set "SourcePath=d:\test fb2 folder"
    for /f "delims=" %%a in ('dir "%SourcePath%" /a-d/b/s') do "c:\Program Files\WinRAR\WinRAR.exe" a -m5 -ep -df "%%~dpna.zip" "%%a"
     

     
    Последний вариант тестировал и на директориях с пробелами в названии и с русскими символами - все ОК.
     
    Беспрерывные улучшения: исходный скрипт работает в Windows 10, но не работает в Windows 8.1.
    Попробую доработать:

    Код:
     
    chcp 1251 >nul
    set "SourcePath=d:\test fb2 folder"
    for /f "delims=" %%a in ('dir "%SourcePath%" /a-d/b/s') do "c:\Program Files\WinRAR\WinRAR.exe" a -m5 -ep -df "%%~dpna.zip" "%%a"
     

     
    Последний скрипт у меня отработал боевую задачу - 1769 файлов в 597 различных директориях с пробелами и русскими символами.

    Всего записей: 417 | Зарегистр. 28-12-2004 | Отправлено: 20:08 29-01-2018 | Исправлено: djdtyfhu, 20:46 29-01-2018
    NIKZZZZ



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    djdtyfhu
    Вообще-то , если это одноразовая задача, она решается, например, в Total Commander в несколько нажатий.
    Открываем в левом окне откуда, в правом куда.
    В левом нажимаем ctrl+b (показать все файлы), ctrl+a (выделить все), alt+F5 (упаковать), выбираем нужный архиватор, без путей, каждый файл файл в отдельно архиве, задача решена, остается только удалить исходный каталог.  

    Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 20:34 29-01-2018
    djdtyfhu



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
     
    В этом случае не будет сохранена структура каталогов.

    Всего записей: 417 | Зарегистр. 28-12-2004 | Отправлено: 20:47 29-01-2018
    NIKZZZZ



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

    Цитата:
    В этом случае не будет сохранена структура каталогов.

    Так в поставленной задаче было именно это условие, а с сохранением путей - поставьте галку "с путями"

    Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 21:09 29-01-2018
    alex52mail

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ и uncleShi Спасибо за полезную информацию по вопросу. Покопавшись еще, поместил ответ в форме, как хотел бы сам видеть при постановки вопроса.
    К сожалению, когда выбираешь замену типа  X:\  на  Z:\  jv16 меняет только начинающие с  X:\ строки, и меняет ВСЮ строку на строку только с  Z:\   Надо дальше искать редактор реестра с заменой только указанного в любой части строки, не трогая остальную часть строки.
    Понимаю вопрос вышел за пределы темы, но пролистав несколько страниц тем форума не нашел где обсудить Реестр.  
    Не могли бы подсказать где такая тема?

    ----------
    Везде трудно первые 15 лет, потом легче.
    Все проблемы имеют ПРОСТОЕ решение
    Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

    Всего записей: 329 | Зарегистр. 04-09-2015 | Отправлено: 14:15 30-01-2018 | Исправлено: alex52mail, 14:55 30-01-2018
    NIKZZZZ



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

    Цитата:
    Не могли бы подсказать где такая тема?

     
    Наверху страницы есть "Поиск", зайдите в него, и наберите "реестр windows"

    Всего записей: 4843 | Зарегистр. 08-02-2006 | Отправлено: 14:30 30-01-2018
    JekaRus

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Возможно ли батником или vb скриптом отслеживать время блокировки рабочей станции? Нужно вычислить время работы ПК за минусов времени когда экран был заблокирован. На семерках можно включить в политике аудита фиксацию времени блокировки, но у нас много ПК которые работают на ХР.

    Всего записей: 1009 | Зарегистр. 10-08-2005 | Отправлено: 04:24 31-01-2018
    Beeboba



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго время дня ruboardовцы
     
    давненько я не заходил
     
    требуется парсер cmd вида : если в текстовом файле (например c:\test\a.txt)  отсутствует слово (например 50855F47) то перезагружать ПК

    Всего записей: 72 | Зарегистр. 15-01-2002 | Отправлено: 14:00 31-01-2018
    RetroRocket



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

    Код:
    if not exist c:\test\a.txt goto exit
    type c:\test\a.txt | find "50855F47" >nul
    if errorlevel 1 goto reboot
    goto exit
    :reboot
    shutdown -r -t 0 -f
    :exit

    Всего записей: 537 | Зарегистр. 02-01-2018 | Отправлено: 14:47 31-01-2018 | Исправлено: RetroRocket, 14:50 31-01-2018
    Beeboba



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

    Всего записей: 72 | Зарегистр. 15-01-2002 | Отправлено: 11:29 02-02-2018
    sundraw

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

    Код:
     
    @echo off
    SetLocal EnableExtensions EnableDelayedExpansion
     
    Set infile=config.txt
    Set tmpfile=config.tmp
    Set find=forward-socks5 / 12.146.56.146:19980 .
    Set replace=forward-socks5 / %1 .
    if exist %tmpfile% del /q %tmpfile%
     
    for /F "UseBackQ delims=" %%n in ("%infile%") do (  
      set "LINE=%%n"
      echo=!LINE:%find%=%replace%!>>"%tmpfile%"
    )
    copy /y %tmpfile% %infile% >nul
    del /f /q %tmpfile% >nul
     

     
    Он работает, меняет подстроку в строке, но выделенное значение подстроки - это любая величина, которая каждый раз меняется при отработке переменной %1. Как сделать, чтобы скрипт читал любое значение, выделенное жирным шрифтом.

    Всего записей: 666 | Зарегистр. 15-05-2011 | Отправлено: 22:59 04-02-2018 | Исправлено: sundraw, 06:23 05-02-2018
    YuS_2



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

    Цитата:
     Как сделать, чтобы скрипт читал любое значение, выделенное жирным шрифтом.

    Воспользоваться инструментами, у которых есть более вменяемые средства, чем у "чистого" cmd, для обработки текста.
    Например:
    из внешних - sed...
    из встроенных - powershell...
    это, конечно, не единственные инструменты, есть и другие варианты...
     
    Пример:

    Код:
    @echo off
    set "x=%~1"
    if "%x%"=="" (echo No argument&pause&exit)
    powershell -ex baypass -c "&{(gc 1.txt -enc OEM) -replace '(?<=forward-socks5 / )[^ ]+(?= \.)','%x%'|out-file -enc OEM 1.txt}"
    pause

    Всего записей: 1969 | Зарегистр. 03-02-2009 | Отправлено: 23:31 04-02-2018 | Исправлено: YuS_2, 23:48 04-02-2018
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru