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

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

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

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачи на bat-файлах
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Набор GNU утилит для win32
· Встроенный справочник по командам: hh ntcmds.chm
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
 
Готовые решения и частые вопросы:
· Создание листинга директорий на примере создания плейлиста
· Разименовывание переменных
· Переименовывание файлов по дате создания
· Запуск сетевого подключения
· Запуск bat файлов как сервис
· Пример выполнения команд по результату команды ping
· Использование даты на день раньше чем сегодня
 
Невозможности — что нельзя сделать с помощью командных файлов:
· изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
 
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Старая версия первого сообщения

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 22:58 18-11-2005 | Исправлено: Elroir, 05:50 11-11-2006
Valdon



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Refugee, сорри, Ваш вариант верен...
Проста, запускал команду из консоли, а надобыло проста ее в батничек запихнуть....

Всего записей: 428 | Зарегистр. 25-07-2005 | Отправлено: 17:44 04-08-2006
slech



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

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 18:21 04-08-2006
Aroun



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

Всего записей: 680 | Зарегистр. 19-07-2005 | Отправлено: 11:38 05-08-2006
abz



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

Цитата:
и файлы имеющие одинаковые имена складывались в одну папку  

Очень интересно как это вообще ты видишь возможным два и более файла с одним именем в одной папке...  

Всего записей: 14975 | Зарегистр. 04-11-2002 | Отправлено: 12:03 05-08-2006
Aroun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да так и вижу-затираться будут.Трабл в том что на винте очень много одинаковых файлов или почти одинаковых (по названию)
 
Добавлено:
И еще вопрос: как пробиться через батник на рабочий стол. Копирую файлы с него, на пути типа:
C:\Documents and Settings\scan\Рабочий стол
%userprofile%/рабочий стол
%userprofile%/desktop
он ругается. Как быть?
 
 
Добавлено:
Пардон.Разобрался

Всего записей: 680 | Зарегистр. 19-07-2005 | Отправлено: 14:48 05-08-2006
ALEF



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите разобраться.
Как изменть конфигурацию IP на удаленной машине?

Всего записей: 1002 | Зарегистр. 03-11-2003 | Отправлено: 10:44 07-08-2006
econ2



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ООО!!! Какая нужная тема!!!
 
Пишу Database Maintenance Plan для SQL Express 2005 на bat-файлах
http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=275166
 
и столкнулся с проблемой концевых пробелов в переменных,
т.е. в начале задается ряд параметров-переменных:
 

Код:
rem Путь к каталогу бакапов на сервере  
set Backup=D:\MSSQL\BACKUP
rem Microsoft SQL Server Command Line Tool  
set ISQL=C:\PROGRA~1\MICROS~3\90\TOOLS\BINN\osql.exe

 
Но, многие программы (например FAR) добавляют при копировании путей пробелы,
т.е. получается %Backup%="D:\MSSQL\BACKUP "
и, потом эти пробелы в путях приводят к ошибке...
 
как бы сделать Rtrim() для переменных?
 
 

Всего записей: 256 | Зарегистр. 05-10-2004 | Отправлено: 13:33 07-08-2006
uZver



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
econ2
не очень понял откуда пробелы , но  
%Backup:~0,-1% - вернет %Backup% без последнего символа

Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 15:04 07-08-2006
econ2



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
uZver
 
Батник пишеться и редактируется в FAR'e.
При копировании пути из FAR'a по Ctrl+F к пути ВСЕГДА добавляется пробел.
Причем внешне проблему фиг диагностируешь - пробел на конце не виден.
 
> %Backup:~0,-1% - вернет %Backup% без последнего символа  
 
О, а как проверить что последний символ = " "?

Всего записей: 256 | Зарегистр. 05-10-2004 | Отправлено: 15:14 07-08-2006
uZver



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
%Backup:~-1% - только последний символ, вот только скормить  
if %Backup:~-1% ==<пробел>  сходу у меня не получилось
 
во получилось  
if "%Backup:~-1%"==" "  %Backup:~0;-1%

Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 16:03 07-08-2006 | Исправлено: uZver, 18:00 07-08-2006
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не подскажите как рекурсивно удалить все файлы типа *.tmp и ~*.*
заранее благодарен

Всего записей: 1504 | Зарегистр. 07-09-2004 | Отправлено: 16:55 07-08-2006
drewha



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

Цитата:
рекурсивно удалить  

т.е. удалить из всех подкаталогов?
тогда del /S *.tmp

Всего записей: 143 | Зарегистр. 15-01-2003 | Отправлено: 17:11 07-08-2006
hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача переименования файла - что может быть проще!
 
В некоторой папке есть набор файлов в формате PDF, например, такие:
akoeva2_.pdf
work.pdf
test1_.pdf

 
Мне надо их переименовать так, что бы добавить в конец имени каждого файла суфикс 2006_1, т.е. я хочу, что бы получилось такое:
akoeva2_2006_1.pdf
work2006_1.pdf
test1_2006_1.pdf

 
Я написал такой батник:

Код:
rename *.pdf *.
pause
rename *. *2006_1.pdf
pause

 
После 1-го ренейма получаю вот что:
akoeva2_
work
test1_

 
Все ОК. Но после второго ренейма у меня вот что:
akoeva2006_1.pdf
work2006_1.pdf
test1_2006_1.pdf

 
Почему переименование некорректно сработало на akoeva2_.pdf? Я должен был получить akoeva2_2006_1.pdf, а получил akoeva2006_1.pdf, куда делось 2_?

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 19:03 07-08-2006
econ2



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
uZver
 
>во получилось  
>if "%Backup:~-1%"==" "  %Backup:~0;-1%
 
Супер!!!

Всего записей: 256 | Зарегистр. 05-10-2004 | Отправлено: 19:59 07-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
hacsoft
А вот так:
 
For %%I In (*.pdf) Do REN %%I %%~nI2006_1.pdf
 
не проще???

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 21:20 07-08-2006
ViSiToR



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

Цитата:
А вот так:    For %%I In (*.pdf) Do REN %%I %%~nI2006_1.pdf    не проще???

Нет, таким образом подставляется в некоторых фаллах по два раза 2006_1.
Правильнее будет так:
 

Код:
For %%I In (*.pdf) Do For %%J In (2006_1.pdf) Do REN %%I %%~nI%%~nJ
Ren *. *.pdf

хотя и тут будет в некоторых случаях ошибка, например, если файл будет называться так - www.file.com.pdf - то конечный результат будет такой - www.file.com2006_1 - т.е без нужного расширения.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:45 07-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
А можно пример случая, при котором будет задваивание??? Первоначальное окончание названия файла "2006_1" не является ошибкой по условиям задачи...
 
Если, конечно, повторно не запускать?
 
Хотя, похоже, всё-таки первоначальный вопрос был об "истоках ошибки" - в нём не разобрался, но посмотрел - в Far-е тоже получается "нехорошо" при переименовании по маске  
*2006_1.pdf файла akoeva2_.pdf - выходной файл называется akoeva2006_1.pdf

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 22:10 07-08-2006
ViSiToR



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

Цитата:
А можно пример случая, при котором будет задваивание???

Конечно :
Берём два файла - первый называем File.tmp, а второй, File2.tmp - запускаем батник с содержанием твоего примера:
 

Код:
For %%I In (*.tmp) Do REN %%I %%~nI2006_1.tmp

 
Что получаем - первый файл имеет имя File2006_12006_1.tmp, а второй, File22006_12006_1.tmp.
 
Если запустить батник с содержанием моего примера:
 

Код:
For %%I In (*.tmp) Do For %%J In (2006_1.tmp) Do REN %%I %%~nI%%~nJ  
Ren *. *.tmp

 
Что получаем - первый файл имеет имя File2006_1.tmp, а второй, File22006_1.tmp - В принципе, то что нужно...  
Однако, если первый файл назывался так (до запуска батника с моим примером) - File.com.tmp, а второй файл также (File2.tmp), то получим исходные имена файлов такие - Первый файл имеет такое название: File.com2006_1, второй файл имеет такое название: File.22006_1.tmp - Как лечить, в принципе, можно было бы решить этот вопрос, проверяя каждый файл, и если у любого из них, присутствует две (или более) точки, то все символы после первой (и более) точки, и до последней, определялись бы в переменную, затем удалялись (отфильтровывались), а затем подстовлялись вместе с нужным расширением - но это всё только лишь в теории, а на практике сделать я не пробовал, и не думаю что сильно это принципиально, ведь в вопросе hacsoft, и в его примерах, небыло упомянуто название файлов с такой характеристикой.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 22:58 07-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
А вот так
 
For %%I In (*.pdf) Do (REN %%I %%~nI2006_1.pdf)
 
работает правильно

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 23:28 07-08-2006
sonic2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет,
Вот вкратце задачка
в 1-й папке у меня валяется около пары тысяч *.jpg
вида  
3184_80.93.48.58_227698.jpg
3184_80.93.48.58_227704.jpg
 
нужен батник который получив имя такого файла в качестве переменной
отбросит последние 10 символов и по полученной маске произведет удаление.
 

Всего записей: 17 | Зарегистр. 28-07-2006 | Отправлено: 23:48 07-08-2006
   

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

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru