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

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

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

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

   

Widok



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

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

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
leshiy_odessa



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers
 
Огромное спасибо.
 
Это практически то что нужно, но теперь хотелось бы чтобы между именами файлов вставлялось - cmd /c c:\temp\ex.ua-loader.pl login password ID <ИМЯ ФАЙЛА>  && msg * "ФАЙЛ ОТПРАВЛЕН".
 
Если в имени файла пробел, то само собой, что не срабатывает.
 
Я понимаю что наглею, но мне надо пару дней винтиками вертеть, чтобы понять и сделать.
 
UPDATE
 
Вариант с SendTo не срабатывает на нескольких файлах. Он отправляет только один и открывает только одно окно.

Всего записей: 530 | Зарегистр. 23-09-2001 | Отправлено: 02:50 20-09-2009 | Исправлено: leshiy_odessa, 03:10 20-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в кавычки всю строку возьми, с "файл отправлен" не могу точно сказать что делать - пока напиши слитно, может екранировать надо кавычки, а может через & надо делать
 
@echo off
:loop
if "%1"=="" pause & exit
echo %1
echo "cmd /c c:\temp\ex.ua-loader.pl login password ID %1  && msg * "ФАЙЛОТПРАВЛЕН"">myfile.txt
shift
goto :loop
 
вот так выпечатывает но в кавычках
 
еле нашел где у меня send to отключено. выдает все выделенные файлы но вот так
@echo off
:loop
if %1=="" pause & exit
echo %1 >> MyFile.txt
shift
goto :loop
 
в send to поместил ярлык на батник, а файлик с рапечатанными выделенными файлами рядом с батником появлялся. но это не принципиально - просто если батник лежит в send to то рабочей папкой считается папка юзера, чтоб не искать этот файл туда сюда.
еще одна заморочка получится - выводит в кавычках имена файлов с путями
 
понял в чем твоя проблема. отредактировал реестр - просто в контекстное меню добавил, без send to, да возникает множество cmd окон. и даже предупреждение, что до фига. ну не так надо делать. без cmd как то
 
например просто батник в папке запускаешь - он все файлы директории отправляется по очереди.
 
вот когда в TheBat файлы отправляю - никаких окон не возникает.

Цитата:
 
Иногда перед разработчиком возникает вопрос: как сделать так, чтобы в любой момент у пользователя могло работать не более одного экземпляра приложения. Кроме того, нужно, чтобы при попытке запустить еще один экземпляр этого приложения текущий экземпляр уведомлялся об этом.
Рассмотрим, как можно обеспечить поддержку приложений, запускаемых только в одном экземпляре. Это можно реализовать разными способами. Принцип решения задачи основан на использовании некоего общего ресурса, создаваемого и блокируемого приложением. Если второй экземпляр приложения не может этого сделать, ему известно, что один экземпляр уже существует и работу следует завершить.
Чаще всего общим ресурсом, используемым при создании управляемых приложений, запускаемых только в одном экземпляре, служит мьютекс. Мьютекс - это синхронизирующий примитив, поддерживаемый операционными системами, которые допускают взаимодействие между потоками или процессами. Обычно мьютексы применяют для защиты общих ресурсов, чтобы обеспечить монопольный доступ к ним.
 

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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 02:59 20-09-2009 | Исправлено: bomzzz, 07:06 20-09-2009
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
leshiy_odessa
1. Чтобы наш пакетник корректно обрабатывал файлы с пробелами в имени/пути надо в операции сравнения заменить кавычки на какие нить другие ограничители.
2. cmd /c или start тут использовать нельзя. Иначе мы нарвемся на то, от чего так упорно убегаем (т.е. при работе пакетника возникнет куча окон по кол-ву выделенных файлов).
 Тут надо писать полностью ком.строку для запуска перлового скрипта.
3. Что такое msg * "ФАЙЛ ОТПРАВЛЕН" - я без понятия (утилита какая то?). Думаю вполне достаточно обычного echo.
 Сообщение возникнет, только если перловый скрипт вернет 0 (т.е. успешное выполнение).
 Если тупой скрипт ничего не возвращает - убери проверку на errorlevel.
 
В общем, получается так:
Код:
@echo off
:loop
if [%1]==[] pause & exit
perl
-w c:\script\ex.ua-loader.pl login password ID "%1"
if not errorlevel 1 echo ФАЙЛ ОТПРАВЛЕН
echo.
shift
goto
:loop
Как правильно заметил bomzzz в SendTo можно поместить не сам пакетник, а ссылку на него.
 
bomzzz
TotalCommander автоматически создает список выделенных файлов (см. параметры %L, %l, %F, %f, %D, %d), поэтому проще всего скрипту передавать именно его.
В Explorer такой функционал отсутствует, поэтому разработчики вынуждены писать свои расширения и регистрировать их в ContextMenuHandlers. (Для примера можно глянуть, допустим, регистрацию WinRAR).
Так же можно в контекстное меню добавить какой нить системный обработчик...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 15:27 20-09-2009
korosya

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, возможно ли из командной строки изменить версию файла?

Всего записей: 977 | Зарегистр. 19-07-2003 | Отправлено: 22:18 20-09-2009
Dr29BArt



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите написать скриптик. Ззапускается батник с параметром-расширение, нужно подсчитать количество фалов с таким расширением на всех дисках.

Всего записей: 7 | Зарегистр. 20-09-2009 | Отправлено: 23:45 20-09-2009 | Исправлено: Dr29BArt, 23:45 20-09-2009
bomzzz



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

Цитата:
 
ECHO OFF
COLOR 9F
CLS
FOR /R C:\ %%I in (*.txt) DO SET /a COUNT=COUNT+1
ECHO %COUNT%
PAUSE
 

не знаю как маску делать чтоб на всех дисках искало, ета ищуца все текстовые фалы на диске с
for /r c:\ %%I in (%1) do set /a count=count+1
параметр запуска *.txt
for /r c:\ %%I in (*.%1) do set /a count=count+1
параметр запуска  txt
 
поверхностное прогугливание предлагает перебирать все буквы для дисков

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 00:03 21-09-2009 | Исправлено: bomzzz, 03:23 21-09-2009
Artem_Butenko



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

Цитата:
Artem_Butenko
1:

Код:
 
@echo off
for %%i in (*.txt) do call:move "%%i"
goto:eof
 
:move
set /a folder+=1
md folder
move %1 folder
 

 

 
Пример прекрасный, только вот хотелось бы, что-бы каждый файл с расширением *.txt (а их в корневом каталоге может быть множество) перемещался в отдельную папку, тут же в корневом каталоге (где и находятся файлы). Каждой папке присваивается имя от 1 и до бесконечности (в зависимости от количества файлов). М.б., есть возможность присваивать папке имя перемещаемого в нее файла? Пожалуйста, помогите разобраться в этом, пока еще сложном для меня вопросе.
 
Kiev78
 

Цитата:
1. Не понятно, что за маска? Каков конкретно порядок перемещения?
2.  
FOR /r C:\test_folder\ %%a IN (*.*) DO (
md %%~na
move %%a %%~dpa%%~na\%%~nxa
)

 
Прошу меня извинить, но Ваш пример не работает, или я что-то делаю не так? В корневом каталоге создаются папки, а файлы в них не перемещаются. Притом, верно создаются папки по файлам, в именах которых нет пробелов. Пожалуйста, объясните, что я делаю не так?

Всего записей: 662 | Зарегистр. 19-02-2008 | Отправлено: 10:44 21-09-2009 | Исправлено: Artem_Butenko, 10:47 21-09-2009
01MDM



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

Код:
 
@echo off
for %%i in (C:\*.txt) do (
    md "C:\%%~ni"
    move "%%i" "C:\%%~ni"
)
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:29 21-09-2009
Vijkayb

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу найти в инете, подскажите, возможно ли при помощи батника, перелогинеться в XP,  то есть сначала выполнить выход первым пользователем, а потом  вход вторым, и как это осуществить?

Всего записей: 3 | Зарегистр. 21-09-2009 | Отправлено: 14:27 21-09-2009
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:34 21-09-2009 | Исправлено: bomzzz, 14:39 21-09-2009
Vijkayb

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

Цитата:
даже не так - надо юзера по умолчанию менять, автологин и перегружаться наверно

Побывал, но мне нужно без перезагрузки – много времени на неё уходи…

Всего записей: 3 | Зарегистр. 21-09-2009 | Отправлено: 15:01 21-09-2009
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:18 21-09-2009
Vijkayb

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

Всего записей: 3 | Зарегистр. 21-09-2009 | Отправлено: 16:10 21-09-2009
01MDM



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

Цитата:
и как это осуществить?

Не думаю, что это возможно.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:41 21-09-2009
bomzzz



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

Цитата:
 
ECHO OFF
COLOR 9F
CLS
WMIC OS Where Primary=True CALL Win32Shutdown 0      
pause
 

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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:56 21-09-2009 | Исправлено: bomzzz, 04:00 22-09-2009
mychaelo



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
суть проблемы:
имеется обширная папка с файлами (если точнее 2375 штук), именованы они по хэшу. необходимо переименовать их в нормальные имена и рассовать по папкам. еще имеется подготовленный файл с конечными путями, куда следует поместить файлы и какое имя собственно дать, и на всякий случай список оригинальных файлов. пробовал все это сделать в TC (поддерживает импорт списка), но он гордо заявил, что по папкам рассовывать не умеет, из-за чего оказался бесполезен. другие решения либо не имеют импорта списка вообще, либо он до жути корявый. за сим подкрепляю сам архив со списками:
hxxp://slil.ru/28006935
проблема еще в том, как бы сделать батник как можно более универсальный (у меня еще 7 штук аналогичных папок).

Всего записей: 237 | Зарегистр. 26-01-2008 | Отправлено: 21:59 22-09-2009
Buha

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, помогите решить задачу:
 Есть папка c:\server.incom    в ней много папок формата  20090923122409609.user25.1 (соответственно -год -месяц -день -время создания папки. пользователь. номер отчета от пользователя)Нужно чтобы из папок созданных в педыдущий час от часа выполения батника все файлы с расширением *.qst копировались в папку соответствующего юзера. Для папки  20090923122409609.user25.1 это c:\arhiv\user25 . Юзеров от до 100, отчетов до 50.

Всего записей: 19 | Зарегистр. 10-01-2006 | Отправлено: 17:36 23-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а если накладка выйдет и какая нибудь папка пропустится из расчета час назад. надо помнить последнюю разобранную папку.  
 
ну начинай писать - поможем  
да тута просто - несколько строк получица

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:54 23-09-2009 | Исправлено: bomzzz, 17:56 23-09-2009
tigr72

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времяни суток всем.  
При написаний очередной "кухни" под прошивку зверька. Сталкнулся с двумя проблемами. Одну из них очень очень довно (еще во времена MS-DOS 3.3) я решал, но просто за бытностью времен (да и системы круто изменились) все позабыл окончательно...  
Проблема номер один.  
Мне нужно поменять внутри файла с данными (не тхт) 3 байтика где эти байтики находятся я знаю (не в начале и не в конце). Как их можно поменять только средствами BAT файла??? Или стороней консольной программы, только что бы она это делала автоматически без лишних остановок и запросов...  
 
Проблема номер два.  
Как мне проверить размер файла? Т.е. мне в батнике нужно проверить получившийся файл и если он меньше или равнятся определенному размеру то продолжаем, если больше то "материмся" и выходим...  
 
зы Заранее благодарен за помощь!

Всего записей: 4 | Зарегистр. 24-09-2009 | Отправлено: 22:09 24-09-2009
vgiki

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, подскажите как указывается в батнике путь на ftp адрес?  
 
надо с одной машины копировать файл на фтп другой. На сервере требуется логин и пароль.  
 
Заранее спасибо.

Всего записей: 13 | Зарегистр. 31-10-2008 | Отправлено: 08:35 26-09-2009
   

Страницы: 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 » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru