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

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

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача:
Батник должен найти и скопировать файлы (путь, где они находятся неизвестен)по маске расширения(*.pdf, *.doc) и сохранить путь этих файлов в .txt c указанием имени компа и даты копирования. Искать должен на всех дисках и носителях.Сохранить копированные файлы и текстовый файл в той же директории, откуда батник будет запущен. Копирование должно произойти даже если эти файлы с атрибутами скрытый, только для чтения, системный.

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 09:00 24-08-2008
01MDM



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

Код:
 
@echo off
chcp 1251 1>nul
 
for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
   pushd %%i:\ 2>nul  && (
      for /f "tokens=*" %%i in ('dir /b /s /a *.pdf *.doc') do (
         if not "%%~dpi" equ "%%~dp0" (if not exist "%%~nxi" (
            copy "%%i" && echo %date%,%computername%,"%%i" 1>>list.txt
         ) else (
                copy "%%i" "~%%~nxi" && echo %date%,%computername%,"%%i" 1>>list.txt
            )
         )
      )
   )
   popd
)
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:56 24-08-2008 | Исправлено: 01MDM, 14:09 24-08-2008
dardreams



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

Всего записей: 99 | Зарегистр. 29-05-2007 | Отправлено: 13:00 24-08-2008
Zalexi

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как изменить строчку в командной строке WinRar, чтобы она заработала:
a -hp1234 -S -V100M -m5 %P%N %P%N
 
Запускалась из Total Commander с помощью кнопки, где надо были прописаны пути к исполняемому файлу и директории. Должен был создаваться многотомный запароленый ("1234") архив с размером тома 100Мб. Но перестал работать, появляется окно с предупреждением WinRar: Архив поврежден или имеет неизвестный формат.
 
Windows Vista. WinRar 3.71
 
Заранее благодарен всем ответившим.

Всего записей: 16 | Зарегистр. 09-01-2005 | Отправлено: 14:42 24-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо Работает! ТОЛЬКО ОДИН НЮАНС ОСТАЛСЯ- чтобы всё найденное (на всех носителях) *.doc и *.pdf и (list.txt-отчёта) копировалось в одну папку( с указанием имени папки-имя машины и даты копирования) , которая бы создавалась в той же директории, откуда был запущен батник . В данном батнике, например , что находилось на С: скопировалось сюда же и отчет тут же , что было на D- скопировалось на D.

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 18:13 24-08-2008
01MDM



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

Код:
 
 @echo off
chcp 1251 1>nul
 
for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
   pushd %%i:\ 2>nul  && (
      for /f "tokens=*" %%i in ('dir /b /s /a *.pdf *.doc') do (
         if not "%%~dpi" equ "%%~dp0" (if not exist "%%~nxi" (
            copy "%%i" "%%~dp0%%~nxi" && echo %date%,%computername%,"%%i" 1>>list.txt
         ) else (
            copy "%%i" "%%~dp0~%%~nxi" && echo %date%,%computername%,"%%i" 1>>list.txt
         )
       )
    )
 )
   popd
)  
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:57 24-08-2008 | Исправлено: 01MDM, 18:58 24-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Не изменилось, файлы найденные в разных директориях на C, скопировались на C и отчет по С диску, на D -аналогично, и также отдельный отчет по D-диску.
Желательно бы , чтобы все файлы со всех дисков копировались в одну папку и рядом был бы отчет -общий. Но главное, что бы папка скопированных файлов создавалась откуда запускается батник. Например -запускаю с рабочего стола-рядом создаётся папка скопированных всех файлов и рядом или в папке отчёт.

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 19:14 24-08-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
azamapendrus, сейчас не могу протестировать и пишу наощупь,  
В первом варианте замени все %%~dp.... на %~dp....
Попробуй еще такой вариант:

Код:
 
@echo off
setlocal
chcp 1251 1>nul
for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
    pushd %%i:\ 2>nul && (
        for /f "tokens=*" %%i in ('dir /b /s /a *.pdf *.doc') do call:_set "%%i"
    popd
    )
)
for /f "tokens=2* delims==" %%i in ('set toCopy_') do (
    if not exist "%%~nxi" (
        copy %%i && echo %date%,%computername%,%%~i 1>>list.txt
    ) else (
        copy %%i "%~dp0~%%~nxi" && echo %date%,%computername%,%%~i 1>>list.txt
    )
)
chcp 866 1>nul
goto:eof
 
:_set
set /a cnt+=1
set toCopy_%cnt%=%1
 

 
 
Добавлено:
Если не получилось и никто не поможет, то завтра доделаю.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:15 24-08-2008 | Исправлено: 01MDM, 03:52 25-08-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
 
Я раньше при необходимости через командную строку открывал нужный мне веб адрес используя команду "start"

Код:
start  http://forum.ru-board.com

Теперь понадобилось запускать вебадрес который записан в текстовом документе, то  есть документ link.txt в нём записана сылка и нужно что бы батник открыл эту страницу.
Спасибо!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 23:43 24-08-2008
Elroir



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

Цитата:
Теперь понадобилось запускать вебадрес который записан в текстовом документе, то  есть документ link.txt в нём записана сылка и нужно что бы батник открыл эту страницу

Попробуй так:

Код:
 
for /f "tokens=*" %%a in (link.txt) do start %%a
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:57 25-08-2008
XXXXL



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

Цитата:
опробуй так:

Elroir, СПАСИБО!!! Работает

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 06:13 25-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Теперь всё скидывает (скопированные файлы и общий отчет) в то место откуда батник запускаю, только кидает прям так- не в папку.  
Осталось малость, чтобы  всё скидывалось в одну папку(имя папки-это имя машины и дата копирования).

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 13:47 25-08-2008
Zubov1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть файл в папке1 скажем (1.dbf-дбэфка вообщем) команда move перемещает его в папку2 с именем 250808.dbf (текущее число).  
Через некоторое время в папке1 опять появляется файлик 1.dbf.
Вопрос можно ли чтобы второй и последующее вызовы батника дозаписывали вновь появившиеся файлы из папки1  в уже созданный 250808.dbf.
Вызывать внешнюю программу? Вообще возможно ли это?

Всего записей: 3 | Зарегистр. 25-08-2008 | Отправлено: 13:49 25-08-2008
01MDM



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

Цитата:
Теперь всё скидывает (скопированные файлы и общий отчет) в то место откуда батник запускаю, только кидает прям так- не в папку.  
Осталось малость, чтобы  всё скидывалось в одну папку(имя папки-это имя машины и дата копирования).

 
На последнем примере:

Код:
 
@echo off
setlocal

set fld=%computername%_%date%
md "%fld%"

chcp 1251 1>nul
for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
    pushd %%i:\ 2>nul && (
        for /f "tokens=*" %%i in ('dir /b /s /a *.pdf *.doc') do call:_set "%%i"
    popd
    )
)
for /f "tokens=2* delims==" %%i in ('set toCopy_') do (
    if not exist "%%~nxi" (
        copy %%i "%fld%" && echo %date%,%computername%,%%~i 1>>"%fld%\list.txt"
    ) else (
        copy %%i "%fld%\~%%~nxi" && echo %date%,%computername%,%%~i 1>>"%fld%\list.txt"
    )
)
chcp 866 1>nul
goto:eof
 
:_set
set /a cnt+=1
set toCopy_%cnt%=%1
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:29 25-08-2008 | Исправлено: 01MDM, 14:30 25-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
В последнем варианте папка создаётся как надо, но файлов копированных в ней нет,т.е не копирует. А перед этим вариант был(№3) файлы копировались, папки не было.

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 17:54 25-08-2008
01MDM



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

Цитата:
В последнем варианте папка создаётся как надо, но файлов копированных в ней нет,т.е не копирует.

 
Проверил у себя, все копирует в папку "CompName_25.08.08". Около 700 файлов с расширениями *.txt, *.m3u и *.lnk. Создается файл list.txt (около 80kb). Скрипт работает 2-3 минуты.
 
Могу только посоветовать убрать концевые пробелы.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:31 25-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
если убираю кавычки в этих строках так :
copy %%i %fld% && echo %date%,%computername%,%%~i 1>>"%fld%\list.txt"  
) else (  
copy %%i %fld%\~%%~nxi && echo %date%,%computername%,%%~i 1>>"%fld%\list.txt"  
тогда в папку копируются файлы, но без отчёта. А с кавычками " "  создаётся пустая папка и в батнике пишет :путь не найден.

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 19:51 25-08-2008
01MDM



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

Цитата:
если убираю кавычки в этих строках так....
....тогда в папку копируются файлы, но без отчёта.

 
Кавычки должны быть обязательно:
 
"%fld%"
"%fld%\~%%~nxi"
 
Так как возможны пробелы в имени.
 
Скрипт сначала собирает всю инфорацию о файлах на всех доступных дисках и хранит ее в массиве переменных, и только после того как все найдено эти переменные обрабатываются. Скрипт завершает свое выполнение (в зависимости от объема до начала копирования проходит некоторое время, у меня 2-3 минуты ) или недождавшись его закрываешь?
 
И на всякий случай, какая Windows? Я тестировал на Win XP Home.
 
Если все же не получается я попробую переработать предыдущий вариант.
 
 
 
Добавлено:
Вообщем вот так должно все быть Ok:

Код:
 
@echo off
chcp 1251 1>nul
set fld=%computername%_%date%
md "%fld%"
 
for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
    pushd %%i:\ 2>nul  && (
        for /f "tokens=*" %%i in ('dir /b /s /a *.doc *.pdf') do (
            if not "%%~dpi" equ "%~dp0%fld%\" (
                if not exist "%~dp0%fld%\%%~nxi" (
                    copy "%%i" "%~dp0%fld%" && echo %computername%,%date%,%%i 1>>"%~dp0%fld%\list.txt"
                ) else (
                    copy "%%i" "%~dp0%fld%\~%%~nxi" && echo %computername%,%date%,%%i 1>>"%~dp0%fld%\list.txt"
                )
            )
        )    
    )
    popd
)
chcp 866 1>nul
 

 
Можно убрать выделенные буковки, если floppy не нужен.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:27 25-08-2008 | Исправлено: 01MDM, 21:16 25-08-2008
Kilich



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

Цитата:
Вопрос к великим гуру !  
   
Задача такова:  
Как при помощи батника завершить текущий сеанс пользователя и войти под другим  
(Логин, пароль , домен)-обязательно.  
Как покинуть сеанс я знаю(Shutdown -L), а вот с остальным проблема...  
Если это возможно помогите!!!!

 
 
Неужели это не возможно?
Почему все молчат...?
Скажите хоть реально так сделать или нет!?

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 10:09 26-08-2008
01MDM



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

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:20 26-08-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 100 101 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru