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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Если строка имеет фиксированный формат, ее можно разобрать с помощью for , а потом склеить с заменой нужного.

    Всего записей: 4745 | Зарегистр. 08-02-2006 | Отправлено: 23:39 04-02-2018
    sundraw

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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
     <"config.txt">$ (for /f "delims=" %%a in ('find /n /v ""') do @(
       set "s=%%a"& set "s=!s:*]=!"& echo:!s!|>nul findstr /irc:"forward-socks5 / " && (
        echo:!forward-socks5 / %1 .!
       ) || (
        echo:!s!
       )
      )
     )& >nul move $ "config.txt"
    endlocal
    exit /b
     

    YuS_2, NIKZZZZ

    Всего записей: 660 | Зарегистр. 15-05-2011 | Отправлено: 06:47 05-02-2018 | Исправлено: sundraw, 07:12 05-02-2018
    Diabolik



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

    Цитата:
    Как-то подымал вопрос (он видимо помер вместе с 11-ой частью ветки), по поводу написания bat'ника под Windows Server 2003 R2 x86, который должен был находить и удалять все файлы и папки, к которым не было бы обращения больше года.

     
    Прежде чем решать эту задачу, нужно выполнить

    Код:
    fsutil behavior query disablelastaccess

    Если получите

    Код:
    DisableLastAccess = 1

    то задача не разрешима, информации о времени последнего доступа нет, эта опция по умолчанию как раз и имеет такое значение.
    Пишет disablelastaccess не установлен. Напоминаю, что это Windows Server 2003 x86, то есть фактически Windows XP - там части подобного функционала, могло просто не быть.

    Всего записей: 4308 | Зарегистр. 02-10-2004 | Отправлено: 12:53 05-02-2018 | Исправлено: Diabolik, 12:54 05-02-2018
    Start



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

    Код:
     
    @echo off
    cd /d "%~dp0"
    nircmdc.exe win hide title "%ComSpec%"
     
    set form=%date: =0% %time: =0%
    for /f "tokens=1-7 delims=:,./- " %%a in ("%form%") do set DT=%%c.%%b.%%a_%%d.%%e.%%f,%%g
    nircmdc.exe cmdwait 4000 savescreenshot "%DT%.png"
     
    set form=%date: =0% %time: =0%
    for /f "tokens=1-7 delims=:,./- " %%a in ("%form%") do set DT=%%c.%%b.%%a_%%d.%%e.%%f,%%g
    nircmdc.exe cmdwait 4000 savescreenshot "%DT%.png"
     
    set form=%date: =0% %time: =0%
    for /f "tokens=1-7 delims=:,./- " %%a in ("%form%") do set DT=%%c.%%b.%%a_%%d.%%e.%%f,%%g
    nircmdc.exe cmdwait 4000 savescreenshot "%DT%.png"
     
     
    @Echo   
    @cls
     

    Всего записей: 451 | Зарегистр. 28-01-2006 | Отправлено: 17:14 10-02-2018 | Исправлено: Start, 22:44 10-02-2018
    RetroRocket



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

    Цитата:
    скриншоты с курсором мышки

    Вот тут упоминались HyperSnap, IrfanView и XnView. Сам не проверял.

    Всего записей: 412 | Зарегистр. 02-01-2018 | Отправлено: 17:36 10-02-2018
    VadKomarov



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте. Помогите решить такую задачу. Есть текстовый файл надо в нем удалить повторяющиеся строки и оставить только уникальные. Строка не будет превышать 255 символов но в ней могут быть любые символы. Сам файл примерно 50Mb. В принципи не важно будет ли создаваться новый файл или чиститься этот, важен результат. Спасибо.

    Всего записей: 91 | Зарегистр. 01-05-2005 | Отправлено: 17:48 10-02-2018
    thejustsoul



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RetroRocket
    Лучше ShareX ничего нет (имхо). Но тут вроде спросили про консольный скриншотер.

    Всего записей: 1739 | Зарегистр. 30-03-2014 | Отправлено: 17:54 10-02-2018
    RetroRocket



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

    Цитата:
    спросили про консольный скриншотер

    Так HyperSnap умеет запускаться с ключами, например "-snap".

    Всего записей: 412 | Зарегистр. 02-01-2018 | Отправлено: 18:04 10-02-2018
    metatrop

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadKomarov
    Надо уточнять: удаляются ли только повторящиеся подряд строки, или же вообще все дубликаты. Если второе, то с использованием cmd.exe такая задача для файла в 50 МБ практически не решается.

    Всего записей: 201 | Зарегистр. 17-09-2010 | Отправлено: 18:23 10-02-2018
    VadKomarov



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    metatrop
    в том то и дело что удалить надо не подряд повторяющиеся строки а все дубликаты из файла.
     
    думал сделать что то из перебора: типы читаем строку рабочего файла и эту строку сравниваем с временным или созданным фалом и если нет вхождений то добавить запись в этот временный файл а иначе ни чего не делать и снова процедура повторяется со следующей строкой.... это реально будет сделать?

    Всего записей: 91 | Зарегистр. 01-05-2005 | Отправлено: 18:30 10-02-2018
    Pasha_ZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    VadKomarov
    sort -u из GNUWin32 например. Файл будет отсортирован. Ничего страшного?

    Всего записей: 6542 | Зарегистр. 11-03-2002 | Отправлено: 18:37 10-02-2018
    VadKomarov



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Pasha_ZZZ
    ну если другим методом не возможно то ни чего страшного не будет, можно будет и отсортировать. главное достичь необходимого результата именно в командной строке и стандартными средствами (без установки дополнительных программ)

    Всего записей: 91 | Зарегистр. 01-05-2005 | Отправлено: 18:40 10-02-2018
    Pasha_ZZZ



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

    Цитата:
    (без установки дополнительных программ)
    Ну это совсем не одно и то же.

    Всего записей: 6542 | Зарегистр. 11-03-2002 | Отправлено: 18:59 10-02-2018
    metatrop

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadKomarov
    Если использовать miniperl.exe (~640k), то можно обойтись без сортировки
     
    miniperl -ne "if (!exists $m{$_}) {print $_; $m{$_}=1}" <input.txt >output.txt
     
    Файл miniperl.exe можно извлечь отсюда https://clck.ru/CHe73
     
    В этом же архиве, кстати, более грамотно скомпилированный cmdow.exe последней версии, занимающий ~28k вместо 88k (на сайте автора) - на него существенно меньше ругается virustotal.com

    Всего записей: 201 | Зарегистр. 17-09-2010 | Отправлено: 19:03 10-02-2018 | Исправлено: metatrop, 19:06 10-02-2018
    RetroRocket



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadKomarov
    Цитата:
    удалить повторяющиеся строки и оставить только уникальные

     Если всё же решите использовать сторонние средства, то можно взять Akelpad 4.9.8 (тема), к нему плагин Format plugin и запускать так -
    Код:
    akelpad /Show(6) /OpenFile("test_1.txt") /Call("Format::LineRemoveDuplicates") /SaveFile("test_2.txt")

    Всего записей: 412 | Зарегистр. 02-01-2018 | Отправлено: 19:03 10-02-2018
    alex52mail

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Полезно переносить профиль пользователя в более удобное место, особенно запускаясь типа с х64 10ка 2,75 гб W10LTF64O.vhd с приложениями магазина, IE11, и Офис-16,  особенно с его -diff.vhd,  особенно с EWF защитой.  В 10ке некоторые папки переносятся в \Система\Хранилище, но ТОЛЬКО в корень, и причем только другого диска. Также можно переносить папки по отдельности.
    Но проще перенести ВСЮ пользовательскую папку копируя ее в ЛЮБОЕ место, и прописать  это место в
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-*\ProfileImagePath\
    Заменив типа ProfileImagePath ==  X:\Users\alex на любое другое.
    Но при копировании с живой системы, не копируются типа  %USERPROFILE%\NTUSER.DAT
    Можно его копировать с лежачей системы, но проще и менее затратно если можно с живой.
     
       1).   Как копировать с живой системы защищенные файлы типа %USERPROFILE%\NTUSER.DAT ?
       2).   Здесь спросил, но ветка видимо замерла. Может тут пояснят?
    P.S. Определился более простой перенос ВСЕЙ папки пользователя.

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

    Всего записей: 314 | Зарегистр. 04-09-2015 | Отправлено: 20:35 10-02-2018 | Исправлено: alex52mail, 14:42 14-02-2018
    Inoz2000



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сохранить файлы реестра (в т.ч. и NTUSER.DAT) с живой системы может ERUNT. Как вам это поможет при смене расположения профиля, не вписывается в предмет обсуждения этой темы.

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

    Всего записей: 2364 | Зарегистр. 23-04-2009 | Отправлено: 20:54 10-02-2018
    Start



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Для создания скриншотов нашел утилиту MiniCap, но без NirCmd не обошлось, окно консоли нужно как-то убирать.
    Есть одна особенность - после первого снимка активное окно становится неактивным.
    И объём около 5 Мб.
     
    Для трёх снимков код получился такой:

    Код:
     
    @echo off
    cd /d "%~dp0"
    nircmdc.exe win hide title "%ComSpec%"
     
    set form=%date: =0% %time: =0%
    for /f "tokens=1-7 delims=:,./- " %%a in ("%form%") do set DT=%%c.%%b.%%a_%%d.%%e.%%f,%%g
    MiniCap.exe -save "%DT%.png" -sleep 5 -exit -capturedesktop -cursor
     
    set form=%date: =0% %time: =0%
    for /f "tokens=1-7 delims=:,./- " %%a in ("%form%") do set DT=%%c.%%b.%%a_%%d.%%e.%%f,%%g
    MiniCap.exe -save "%DT%.png" -sleep 5 -exit -capturedesktop -cursor  
     
    set form=%date: =0% %time: =0%
    for /f "tokens=1-7 delims=:,./- " %%a in ("%form%") do set DT=%%c.%%b.%%a_%%d.%%e.%%f,%%g
    MiniCap.exe -save "%DT%.png" -sleep 5 -exit -capturedesktop -cursor -capsound
     
    @cls
     

    Всего записей: 451 | Зарегистр. 28-01-2006 | Отправлено: 20:56 10-02-2018 | Исправлено: Start, 00:03 11-02-2018
    NIKZZZZ



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

    Цитата:
     Как копировать с живой системы защищенные файлы типа %USERPROFILE%\NTUSER.DAT ?  

    Скопировать сам файл нельзя простыми средствами, но он подключен как куст реестра, нужно просто найти его ID, и выполнить команду, примерно такую
    reg.exe save "HKEY_USERS\S-1-5-21-xxxxxxxx-xxxxxxx-xxxx-xxxx" d:\...\ntuser.dat

    Всего записей: 4745 | Зарегистр. 08-02-2006 | Отправлено: 21:19 10-02-2018
    Deoptimizer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Необходимо решить такую проблему.
    Как сделать так, чтобы переменная exit не обнулялась после выхода из call другого бат-файла?
     

    Код:
     
    TITLE start.cmd
    color 2e
    @echo off
    set exit=
    :try_again
    if "%exit%"=="1" exit
    cls
    echo start.cmd running...
    echo Please Insert USB Drive (with NT6iso) and press any key
    pause
    cmd /q /c "FOR %%i IN (C D E F G H I J K L N M O P Q R S T U V W X Y Z) DO IF EXIST %%i:\NT6iso\instiso.cmd call set exit=1 && call %%i:\NT6iso\instiso.cmd"
    if "%exit%"=="" goto try_again
     

     
    Когда программа выходит из <диск>\NT6iso\instiso.cmd то должен быть выход из скрипта start.cmd, а оно заново заходит в цикл try_again.
    Спасибо за помощь.

    Всего записей: 135 | Зарегистр. 12-06-2015 | Отправлено: 12:03 12-02-2018 | Исправлено: Deoptimizer, 12:08 12-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