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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Да там какие угодно варианты можно лепить, очень мощная программулина, не знаю, чего у XXXXL не получается.
 
Чтобы не перезаписывало надо указывать ключ -o (выходной файл). Чтобы вставлять оригинальное имя файла, нужно указывать в комстроке знак процента %, при запуске из батника ессно процент удваивать
Например из батника вставить рисунок logo.png в правый нижний угол всех *.jpg в папке, файлы не перезаписывать, а сохранять под именем result_оригинальное_имя.jpg

Код:

nconvert -keepcspace -out jpeg -wmfile logo.png -wmflag bottom-right -o result_%%.jpg *.jpg


Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 11:53 12-03-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergey_AV
Да, с dos в наше время проблемы.. Попробуй по наличию файла

Код:
 
@echo off
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 (
      dir %%i:\ | find.exe "file.ext"
      if errorlevel 0 set letter=%%i:
)
echo %letter%
 

 
Не знаю будет работать в dos или нет.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:56 12-03-2008
igor_andreev

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

Всего записей: 1671 | Зарегистр. 08-12-2004 | Отправлено: 11:56 12-03-2008
01MDM



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

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:59 12-03-2008
BorlandIMHO

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

Цитата:
как из бат-ника (ДОС) можно определить букву CD-ROM?  
C этой задачей прекрасно справляется autoexec.bat со стандартной грузовой дискеты Win98 или WinMe. Посмотри решение на ней...
А то и просто допиши в конец готового батника необходимые команды (до обнуления переменной %CDROM%).
 
01MDM

Цитата:
Попробуй по наличию файла
for работает только в NT, насколько мне известно.


----------
http://www.imho.ws

Всего записей: 1269 | Зарегистр. 12-10-2006 | Отправлено: 14:54 12-03-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
for в досе есть, без ключей. Примеры можно посмотреть здесь. Вопрос в том будет ли работать конструкция если внутри цикла for есть еще команды или их надо вызывать через call.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:07 12-03-2008
Sergey_AV



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

Цитата:
C этой задачей прекрасно справляется autoexec.bat со стандартной грузовой дискеты Win98 или WinMe. Посмотри решение на ней...  

Не штырит меня это решение, никак не штырит. Еще с далекого, "бородатого" 1997-го года - есть куда более изящное решение. И драйвер, понимающий большинство приводов (не только тамошних, кстати).

Цитата:
А то и просто допиши в конец готового батника необходимые команды (до обнуления переменной %CDROM%).  

На днях попробую. Соб-сно, решение уже дали - остается проверить...
 

Всего записей: 2336 | Зарегистр. 05-03-2002 | Отправлено: 19:21 12-03-2008
Eximus



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
поможите плиз
есть папка Р, в ней файлы и папки
надо чтобы все файлы переносились в подпапку Р:/1, а из корня Р удалялись
на следующий день папка Р:/1 очищается, и опять из корня Р все копируется в нее
заранее спасибо!

Всего записей: 108 | Зарегистр. 29-09-2006 | Отправлено: 19:56 13-03-2008
Elroir



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

Код:
@echo off
md "C:\P\1" 2>nul
del
/q "C:\P\1\*.*" 2>nul
move
"C:\P\*.*" "C:\P\1\" >nul

и запускай его каждый день или поставь в планировщик.
В коде замени "C:\P" на полный путь к твоей директории "P".

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:10 13-03-2008
Eximus



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

Всего записей: 108 | Зарегистр. 29-09-2006 | Отправлено: 22:15 13-03-2008
Eximus



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Elroir только вот еще вопрос: в корне папки Р есть еще папки, которые этот скрипт оставляет на месте
а как сделать чтобы и папки переносились в подпапку Р:/1, а из корня Р удалялись?

Всего записей: 108 | Зарегистр. 29-09-2006 | Отправлено: 04:02 15-03-2008
svradmin



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасите пожалуйста всю голову сломал как сделать чтоб в определенной папке найти папки созданные сегодня с любым именем и скопировать их на сетевой ресурс в папку с сегодняшней датой - которую надо создать, на форуме нашел вот этот скрипт он ищет файлы пробовал переделать не получилось
 
@Echo Off
Set PATH_POISK="C:\user"
 
set T_Date=%DATE%
 
rem Для поиска в каталоге, указанном в PATH_POISK
rem и во всех его подкаталогах - FOR /R
FOR /R %PATH_POISK% %%a IN (*.*) DO @Call :MY_DEL "%%a" %%~ta
 
rem Для поиска в каталоге, указанном в PATH_POISK
rem НЕ ищя в его подкаталогах - FOR  
rem FOR %%a IN (%PATH_POISK%\*.*) DO @Call :MY_DEL "%%a" %%~ta
rem GoTo :EOF
 
 
:MY_DEL
SET F_DATE=%2
if %F_DATE%==%T_Date% (copy %1 c:\123\)
GoTo :EOF

Всего записей: 20 | Зарегистр. 10-03-2007 | Отправлено: 06:53 15-03-2008 | Исправлено: svradmin, 07:12 15-03-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
svradmin
Проверь этот вариант. Батник должен быть в папке, где нужно проверять подпапки

Код:
 
@echo off
setlocal
 
for /f "tokens=4*" %%i in ('dir /ad ^| findstr %date% ^| findstr /v [.]$') do (
     set "folder=%%i %%j" && call:move
)
goto:eof
 
:move
if "%folder:~-1,1%"==" " set "folder=%folder:~0,-1%"  
echo D | xcopy /e /y /q "%folder%" "\\Share\%date%\%folder%" 1>nul 2>&1
 


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



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

Цитата:
а как сделать чтобы и папки переносились в подпапку Р:/1, а из корня Р удалялись?


Код:
@echo off
md "C:\P\1" 2>nul
pushd "C:\P\1\" && RD /s /q "C:\P\1\" 2>nul
popd
move "C:\P\*.*" "C:\P\1\" >nul
for
/d %%a in ("C:\P\*.*") do move "%%~fa" "C:\P\1\" >nul


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:54 15-03-2008
d per



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

Всего записей: 8 | Зарегистр. 16-03-2008 | Отправлено: 01:52 16-03-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
d per
Предположим, что название процесса - это "process.exe", тогда для WinXP:

Код:
tasklist | find /i "process.exe" || start process.exe


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:11 16-03-2008
d per



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Спасибо. Только оно как-то не так работает.  
 

Код:
tasklist | find /i "progrAm.exe" || start "C:\Program Files\progrAm\progrAm.exe"

 
вместо progrAm.exe запускается такая же консолька,  с названием окна, как путь в start

Всего записей: 8 | Зарегистр. 16-03-2008 | Отправлено: 12:19 16-03-2008
01MDM



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

Код:
 
 tasklist | find /i "progrAm.exe" || start "" "C:\Program Files\progrAm\progrAm.exe"
 

 
После start пустая пара кавычек и проверь путь к progrAm.exe
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:28 16-03-2008
d per



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо. Заработало
 
 
 
 
И еще один вопрос, если можно: где-то на форуме читал, что bat можно запускать через определенное время, как в Cron. Никак не могу найти, где про это читал. Подскажите пожалуйста.

Всего записей: 8 | Зарегистр. 16-03-2008 | Отправлено: 12:33 16-03-2008 | Исправлено: d per, 12:41 16-03-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
d per
Смотря какое "определенное время". Стандартный планировщик, команда at, nnCron.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:00 16-03-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