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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
king_stiven

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

Цитата:
Нет. Ярлык - это файл. И обращение к нему может быть только как к файлу

То есть из ярлыка никак полный путь к файлу или папке не выдрать?

Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 12:54 07-01-2007
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пока получается так:
 
find "\"<имя.lnk | find ":">1.txt
 
и во второй строчке 1.txt получаем путь к файлу или папке.

Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 23:45 07-01-2007 | Исправлено: king_stiven, 00:05 08-01-2007
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
king_stiven
lnk - это бинарный файл. Подобный способ "выдирания" пути в ПРИНЦИПЕ будет работать (хотя я не понял, зачем два раза, одного условия ":\" не хватить? Проверять лень ) Но это НЕ НАДЁЖНЫЙ способ. Т.е. всегда надо помнить, что рано или поздно может возникнуть ситуация, когда ЭТО сработает не так как надо.

Всего записей: 3453 | Зарегистр. 09-02-2003 | Отправлено: 00:04 08-01-2007
king_stiven

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

Цитата:
рано или поздно может возникнуть ситуация, когда ЭТО сработает не так как надо.  

А например, в каких ситуациях? Учесть, что используются ярлыки к конкретным музыкальным файлам и папкам на одном компе.

Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 00:14 08-01-2007
Smitis



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

Цитата:
А например, в каких ситуациях?

А вот попадётся среди бинарных данных символ ":" и всё. А может и не попадётся никогда. Я же говорю - ненадёжный способ. Лучше воспользоваться WSH - там можно воспользоваься стандартными функциями для работы с ярлыками.

Всего записей: 3453 | Зарегистр. 09-02-2003 | Отправлено: 13:25 08-01-2007
zig_zag

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет...!!! народ не подскажите как быть...???
никак не могу настроить Acronis:
Название файла должно содержать название источника и дату или день недели
   - в зависимости от частоты архивирования.
 Если в графике по дням недели, то название должно содержать название дня недели,
  если раз в месяц, то чётность месяца...
 При этом, архивы с днями недели должны храниться неделю  
  (т.е. архив за вторник должен затирать предыдущий архив за  вторник)
 Архивы, которые храняться по месяцу - должны затирать предпоследний архив  
  - т.е. в постоянно имеем два архива (чётный и нечётный месяц)  
 
может можно скрипт воткнуть...???
Before backup process - поместить скрипт по удалению предыдущего архива
After backup process -  поместить скрипт по переименованию полученного архива

Всего записей: 2 | Зарегистр. 10-01-2007 | Отправлено: 12:43 11-01-2007
Serge2005

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток. Есть такая задача. Запускается bat или cmd файл, который определяет свое местонахождение, из этого пути вытаскивает имя папки, в которой он лежит, присваивает это значение переменной, а потом, добавив это значение к новому пути, копирует файлы...Помогите, пожалуйста....
 
И еще, если ли какой-нибудь учебник для начинающих, как и что с примерами...? Выложите, пожалуйста, если есть...

Всего записей: 555 | Зарегистр. 11-02-2006 | Отправлено: 00:10 14-01-2007
Elroir



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

Код:
 
@echo off
setlocal enabledelayedexpansion
 
:: Setting the first part of destination directory
set dest=c:\temp\
 
:: Finding the length of batch file's pathname
set test=%~p0
set count=0
:again
for /f "delims=\ tokens=1*" %%a in ("%test%") do (
set /a count=!count!+1
set test=%%b
)
if not "%test%"=="" goto again
 
:: Finding and setting the second part of destination directory  
for /f "delims=\ tokens=%count%" %%b in ("%~p0") do set wdir=%%b
 
:: Copying files to destination directory
copy *.* "%dest%%wdir%\"
 

Выделенный путь должен заканчиваться символом "\".

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 06:18 14-01-2007
Serge2005

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

Всего записей: 555 | Зарегистр. 11-02-2006 | Отправлено: 11:00 14-01-2007
lucky_Luk

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Иногда мне нужно перезапустить Explorer, написал такой батник:
 
taskkill /f /im explorer.exe
cd %windir%
explorer.exe
 
Что дописать чтобы после запуска explorer.exe закрывалось окно командной строки?
ОС WinXP SP2.

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 21:57 17-01-2007
Smitis



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

Цитата:
Что дописать чтобы после запуска explorer.exe закрывалось окно командной строки?

exit

Всего записей: 3453 | Зарегистр. 09-02-2003 | Отправлено: 22:41 17-01-2007
lucky_Luk

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

Цитата:
exit

Не помогает. ИМХО при обработке батника система ожидает пока закончит работу запущенный explorer.exe, а потом выполнит команду Exit. А поскольку Explorer продолжает работу то выполнение батника останавливается без получения Exit и окно остается.

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 23:09 17-01-2007
Elroir



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

Цитата:
Что дописать чтобы после запуска explorer.exe закрывалось окно командной строки?  
ОС WinXP SP2.

Попробуй запускать так:

Код:
start explorer.exe

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:40 18-01-2007
Fraerok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1) Можно ли через батник удалять пустые папки? Т.к., допустим, вот это DEL /S /Q "%ProgramFiles%\XXX" оставляет пустые папки.
 
2) Как сделать так, чтобы определенный блок DEL'ов он выполнял только, если пользователь скажет "Yes", а если пользователю это не нужно, то он пропускал этот блок?
 
Спасибо.

Всего записей: 1727 | Зарегистр. 11-05-2006 | Отправлено: 03:29 18-01-2007
Elroir



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

Цитата:
Можно ли через батник удалять пустые папки?

Можно, только это делается не командой del, которая удаляет файлы, а командой rd:

Код:
rd /s /q "%ProgramFiles%\XXX"

Удаляет директорию XXX со всеми поддиректориями.
 

Цитата:
Как сделать так, чтобы определенный блок DEL'ов он выполнял только, если пользователь скажет "Yes",  


Код:
 
set /p ans=Хотите удалить? (yes/no)  
if /i not "%ans%"=="yes" goto not_del
rem del ..  
:: Блок del-ов, которые выполняются, если ответ "yes"
rem del ..
:not_del
rem del ..
:: Блок остальных del-ов
rem del ..
 
 

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:42 18-01-2007
melmak

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!
Помогите решить оду задачку средствами бат
 
есть два значаения времени
 
14:15:44 14:16:06
 
необходимо вычислить разницу времени
 
Спасибо за помощь!

Всего записей: 2 | Зарегистр. 18-01-2007 | Отправлено: 16:00 18-01-2007
Elroir



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

Цитата:
есть два значаения времени 14:15:44 14:16:06 необходимо вычислить разницу времени


Код:
 
@echo off
setlocal
:: Checking number of arguments
if "%1"=="" goto :EOF
if "%2"=="" goto :EOF
 
:: Extracting hours, minutes, seconds
for /f "tokens=1-6 delims=: " %%a in ("%1 %2") do call :compare %%a %%d %%b %%e %%c %%f
goto :EOF
 
:compare
:: Deciding what time is later
if %1 GTR %2 (set later=first) else (
if %1 LSS %2 (set later=second) else (
if %3 GTR %4 (set later=first) else (
if %3 LSS %4 (set later=second) else (
if %5 GTR %6 (set later=first) else (
if %5 LSS %6 (set later=second) else (
set later=none ))))))
 
if %later%==none (
echo 00:00:00
goto :EOF
)
 
:: Calculating difference
if %later%==first (
set fh=%1& set sh=%2& set fm=%3& set sm=%4& set fs=%5& set ss=%6) else (
set fh=%2& set sh=%1& set fm=%4& set sm=%3& set fs=%6& set ss=%5)
 
set /a ds=%fs%-%ss%
if %ds% LSS 0 (
set /a ds=60+%ds%
set /a fm-=1
)
 
set /a dm=%fm%-%sm%
if %dm% LSS 0 (
set /a dm=60+%dm%
set /a fh-=1
)
 
set /a dh=%fh%-%sh%
 
:: Converting to 2 digits format
if "%ds:~1,1%"=="" set ds=0%ds%
if "%dm:~1,1%"=="" set dm=0%dm%
if "%dh:~1,1%"=="" set dh=0%dh%
 
echo %dh%:%dm%:%ds%
 

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:01 19-01-2007
melmak

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасиби большое Elroir
 
Помоги немного еще, я в этом деле новичек
 

Цитата:
Время передается батнику 2 аргументами.

 
можно задать значения не аргументами а переменными типа
set hh1=14
set mm1=15
set ss1=44
set hh2=14
set mm2=16
set ss2=06
 
Спасибо

Всего записей: 2 | Зарегистр. 18-01-2007 | Отправлено: 10:24 19-01-2007
Elroir



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

Цитата:
можно задать значения не аргументами а переменными

Можно, вместо  

Код:
 
:: Checking number of arguments  
if "%1"=="" goto :EOF  
if "%2"=="" goto :EOF  
 
:: Extracting hours, minutes, seconds  
for /f "tokens=1-6 delims=: " %%a in ("%1 %2") do call :compare %%a %%d %%b %%e %%c %%f  
goto :EOF
 

надо вставить

Код:
 
set hh1=14
set mm1=15
set ss1=44
set hh2=14
set mm2=16
set ss2=06
call :compare %hh1% %hh2% %mm1% %mm2% %ss1% %ss2%
goto :EOF
 

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 10:56 19-01-2007 | Исправлено: Elroir, 10:57 19-01-2007
lucky_Luk

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

Цитата:
Попробуй запускать так:
 
Код:
start explorer.exe

Спасибо, сработало.

Всего записей: 7100 | Зарегистр. 29-11-2004 | Отправлено: 22:48 19-01-2007
   

Страницы: 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 109 110 111 112 113 114 115 116 117 118

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru