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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vint321
    В реестре все, в ключе
    HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
    FaceName, FontFamily, FontSize...

    Код:

    reg add /?

    Чтобы изменения вступили в силу сразу, нужно после reg add выполнить команду

    Код:

    rundll32.exe user32.dll,UpdatePerUserSystemParameters

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 16:48 28-04-2008 | Исправлено: igor_andreev, 16:54 28-04-2008
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:00 28-04-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Ну естественно не сразу в консоли вдруг все буквы изменятся, а после перезапуска cmd.exe. Но не после logoff.

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 17:05 28-04-2008
    vint321

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    грустная история  
    неужели так уж одним батником ничего и несделать?
     
    А можно ли заставить брать шрифт из файла? (наверно глупость сказал)

    Всего записей: 7 | Зарегистр. 11-04-2008 | Отправлено: 17:16 28-04-2008 | Исправлено: vint321, 17:33 28-04-2008
    01MDM



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

    Цитата:
    а после перезапуска cmd.exe. Но не после logoff.  

     
    Мне приходится перелогиниваться
     

    Код:
     
    reg add "hkcu\Console" /v "FaceName" /t reg_sz /d "Lucida Console" /f
    reg add "hkcu\Console\cmd" /v "FaceName" /t reg_sz /d "Lucida Console" /f
    rundll32.exe user32.dll,UpdatePerUserSystemParameters
     

     
    Не приносит результата при перезапуске cmd. Шрифт остается старый.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:33 28-04-2008
    igor_andreev

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

    Код:

    @echo off  
     
    rem сохраняем текущие настройки cmd.exe в файл  
    reg export HKCU\Console\%%SystemRoot%%_system32_cmd.exe "%temp%\console_settings_backup.reg"  
    reg delete HKCU\Console\%%SystemRoot%%_system32_cmd.exe /f
     
    reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v FaceName /d "Lucida Console" /f  
    reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v FontFamily /t REG_DWORD /d 0x00000036 /f  
    reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v FontSize /t REG_DWORD /d 0x00120000 /f  
    rundll32.exe user32.dll,UpdatePerUserSystemParameters  
     
    rem запускаем окно cmd с шрифтом  Lucida Console и размером 18  
    start cmd /k echo it's font Lucida Console  
     
    reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v FaceName /d "Terminal" /f  
    reg delete HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v FontFamily /f  
    reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v FontSize /t REG_DWORD /d 0x0012000a /f  
    rundll32.exe user32.dll,UpdatePerUserSystemParameters  
     
    rem запускаем окно cmd с шрифтом   Terminal и размером 10x18  
    start cmd /k echo it's font Terminal  
     
    rem восстанавливаем настройки из файла  
    reg import "%temp%\console_settings_backup.reg"  
    rundll32.exe user32.dll,UpdatePerUserSystemParameters

    Отредактировал, дворд один пропустил
     
    Добавлено:
    Если изначально настройки не в HKCU\Console\%SystemRoot%_system32_cmd.exe (а у тебя кажется в HKCU\Console\cmd), то сработает только со второго раза.

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 17:56 28-04-2008 | Исправлено: igor_andreev, 18:05 28-04-2008
    DiMaS_2006



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Поэкспериментировав, нашел решение. Юзера и пароль надо указывать полными словами и в команде (из txt не выходит). Вот так:
    Код:
    ftps.exe -s:C:\1.txt -user:anonymous -password: -d
    Соединение с сервером устанавливается - скрин.
    В реестре записал вот это:
    Код:
    C:\DiMaS\Bat&Script\ftps.exe -s:C:\DiMaS\Bat&Script\1.txt -user:anonymous -password: -d %1
    А в текстовом файле:
    Код:
    open ftp.burnet.ru
    cd incoming
    cd users
    cd DiMaS
    passive
    put "%1"
    . Единственная неувязка теперь - опять передача параметра (L, кавычки пробовал, не берет, говорит "%1" не найден)

    ----------
    Маленькими шагами к большой цели

    Всего записей: 515 | Зарегистр. 01-08-2006 | Отправлено: 18:37 28-04-2008 | Исправлено: DiMaS_2006, 18:38 28-04-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По идее, если положишь вот такой батник в папку SendTo, то сможешь отправлять файлы на свой фтп. ftps.exe кинь в Windows\system32. На файле правой кнопкой мыши -> Отправить.

    Код:

    @ECHO OFF
     
    ECHO open ftp.burnet.ru>"%TEMP%\SCRIPT.FTP"
    ECHO cd incoming/users/DiMas>>"%TEMP%\SCRIPT.FTP"  
    ECHO passive>>"%TEMP%\SCRIPT.FTP"
    ECHO binary>>"%TEMP%\SCRIPT.FTP"
    ECHO put "%~1">>"%TEMP%\SCRIPT.FTP"
    ECHO bye>>"%TEMP%\SCRIPT.FTP"
     
    FTPS -s:"%TEMP%\SCRIPT.FTP" -user:anonymous -password: -d
    DEL "%TEMP%\SCRIPT.FTP"

    Bat&Script - нехорошее название, батник может споткнуться из-за "&"  
     
    Добавлено:
    Папка SendTo открывается просто - Пуск-Выполнить- написать SendTo и нажать Enter

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 19:13 28-04-2008
    DiMaS_2006



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо, но, увы, та же история, пока выполняется батник, пишется
    Код:
    ftp> C:\Documents and Settings\Дима\Рабочий стол\123.jpg: File not found
    (Соединение, смена папок и переключения в режимы проходят нормально). А если не удалять файл скрипта, там в последней строке путь к файлуна тарабарском, вроде c:\documents and settings\*&^*&\)*(&^*&^*&^, с корявыми русскими названиями.

    ----------
    Маленькими шагами к большой цели

    Всего записей: 515 | Зарегистр. 01-08-2006 | Отправлено: 20:03 28-04-2008
    igor_andreev

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

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 21:19 28-04-2008
    STtt



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Повторю еще раз свою прозьбу. Уже пальци устали копировать из одного места в другое и обратно по пять раз в день.  
    Не удается копировать папку. Помогите с решение этой задачи. Вот мой bat:

    Код:
    xcopy "%SYSTEMDRIVE%\Users\weer\AppData\Roaming\uTorrent" "D:\1\test" /s/y/h/k/q

    Всего записей: 33 | Зарегистр. 26-01-2003 | Отправлено: 21:59 28-04-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    STtt
     
    В XP такой вариант работает. Если целевая папка существует
     
    Попробуй так. Должно работать в любом случае

    Код:
     
    xcopy "%SYSTEMDRIVE%\Users\weer\AppData\Roaming\uTorrent\*" "D:\1\test\" /s /y /h /k /q
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:21 28-04-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    STtt
    да возьми же ты robocopy, она для копирования папок просто идеальна
     
    Код:
    robocopy "%SYSTEMDRIVE%\Users\weer\AppData\Roaming\uTorrent" "D:\1\test" /mir
     
     
    для xcopy имхо так:
    Код:
    if not exist "D:\1\test" md "D:\1\test"
    xcopy/y/e/v/c/i/h/r/k/g/z "%SYSTEMDRIVE%\Users\weer\AppData\Roaming\uTorrent" "D:\1\test\"
     
    тут почитай, приводится код для создания портативности utorrent, возможно, тебе нужно именно это

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:30 29-04-2008 | Исправлено: Nagual, 00:48 29-04-2008
    AdepTcs



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

    Всего записей: 4 | Зарегистр. 25-04-2008 | Отправлено: 03:42 29-04-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    есть каталог D
    структура dir1, dir2, dir3, dirN (dir/b/s/a:d D)
    нужно получить переменную вида
    dir1;dir2;dir3;dirN

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 04:14 29-04-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AdepTcs
    Проверь Windows\System32 директорию. Твой reg файл должен быть там.
     
    Nagual
    Не понятно.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:28 29-04-2008
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Насколько я понял задачу:

    Код:
    @echo off
    setlocal enabledelayedexpansion
    for /f "tokens=*" %%a in ('dir /b /s /a:d') do call :label1 %%a
    echo %var:~1%
    goto :eof
     
     
    :label1
    if %~1=="" goto :eof
    set symbol=0
    set foldernum=0
     
    :next
    set stroka=%~1
    set /a symbol+=1
    if "!stroka:~%symbol%,1!"=="\" set /a foldernum+=1
    if "!stroka:~%symbol%,1!" NEQ "" goto next
    set /a foldernum+=1
    for /f "delims=\ tokens=%foldernum%" %%a in ('echo %~1') do set var=!var!;%%a
    goto :eof
     

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 08:39 29-04-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста поправить код:
    Необходимо найти последний файл в папке "D:\1" и определить дату его создания(вплоть до секунд).
    Затем в папке "D:\2" найти найти файл созданный в это же время и при условии что в этом файле не присутствует последовательноть символов "qwe" или "rty" или "uio" он копируется в папку "D:\3"
     
    @echo off
    FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\3\*.*"') do set /a count+=1
    IF EXIST D:3\*.* set "count=0%count%" ELSE
    set "count=00%count%"
    set "count=%count:~-2%"
    for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (
     - определить дату создания последнего файла(с секундами)???????
     - найти в папке D:\2 файл с такой же датой создания  и если выполняется условие?????????
    more +3 "D:\2\%%f" | findstr "qwe rty uio" 1>nul || (
    copy /y /D "D:\2\%%f" "D:\3\17%date:~0,2%%count%.dvc"
    goto :eof
    )
    )
    Заранее благодарен за помощь!

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 11:21 29-04-2008 | Исправлено: bmax, 12:20 29-04-2008
    mrGizmik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ Хелп.
    ситуация следующего характера уже упарился.
    Короче Win2003 bat файл должен выгружать на FTP (используем ftp.exe) *.rar архив, потом на другой машине где тоже стоит 2003 он должен зайти и забрать этот архив. Все прекрасно работает загружет выгружает создает архивирует.. НО! при распаковке лажа получается... недогружает буквально децл инфы какихто 15 байт при выгрузке на ФТП.
    причем что сам rar архив что любой файл. из под XP все работает прекрасно в обе стороны все переливается  и распаковывается в 2003 тоже все переливается но не распаковывается типа "неожиданный конец архива" выгружаемые файлы в порядке, лажа происходит при выгрузке файла.  
    Добавлять информацию для востановления пробовал, не помагает.
    в чем прикол? я что-то догнать немогу. ПЛиз ХЕЛП!

    Всего записей: 2 | Зарегистр. 29-04-2008 | Отправлено: 12:48 29-04-2008
    DiMaS_2006



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо! Все заработало

    ----------
    Маленькими шагами к большой цели

    Всего записей: 515 | Зарегистр. 01-08-2006 | Отправлено: 13:24 29-04-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru