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

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
День добрый. Люди, помогите с смд. Мне бы написать такую штучку (выражусь словами):  
 
Написав путь к файлу и нажав на ввод, этот файл копируется в заранее указанную директорию.  
 
Спасибо =)

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



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

Код:
 
@echo off
setlocal
 
set DestDir=D:\Test
md "%DestDir%" 2>nul
 
set /p ToCopy="Choose File To Copy: "
copy %ToCopy% "%DestDir%"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:04 01-01-2009 | Исправлено: 01MDM, 12:07 01-01-2009
fedorgh

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А не помогут ли мне Гуру батников найти способ сравнетия фойлов по дате создания на больше-менньше. В общем задача такая: в архиве С:\Архив\ есть много папок с заархивированными Rar'ом базами данных. Пройти по каталогам и выбрать только меня интересующие архивы, например, Firma.rar у меня получилось, определить их дату и полные пути к файлам тоже получается. Осталось выбрать самый свежий и подставить в  батнике в Rar, чтобы восстановить последние данные. Но как сравнить даты не соображу. Заранее спасибо!

Всего записей: 9 | Зарегистр. 29-09-2007 | Отправлено: 12:53 02-01-2009
igorantonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как из переменной %computername% получить переменную, равную первым двум символам имени компьютера?

Всего записей: 28 | Зарегистр. 22-10-2004 | Отправлено: 15:39 02-01-2009
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igorantonov
set "letters=%computername:~0,2%"

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:50 02-01-2009
VergilDevil



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Большое спасибо =)

Всего записей: 11 | Зарегистр. 01-01-2009 | Отправлено: 16:40 02-01-2009
demon1981



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, помогите со следующей задачей:  
Надо с пом-ю 7zip архивировать базы 1С. На компе несколько работающих конфигов 1С (бухгалтерия, зарплата... по несколько организаций и на разные даты). В принципе пути к базам хранятся в реестре. Их можно оттуда взять типа так:  

Код:
reg query hkcu\Software\1c\1cv7\7.7\titles^|find /i "reg_sz"

 
таким макаром можно подсчитать количество пользуемых конфигов  

Код:
for /f  %%i in ('reg query hkcu\Software\1c\1cv7\7.7\titles^|find /i "reg_sz"') do (  
set /a strCount=strCount+1)

 
бэкапить можно так  

Код:
7z -a -t7z     %path%%date%.7z

 
а вот как забэкапить все скажем 3 базы в 1ном скрипте?  
попробуйте, может у кого получится...  
 
cnjbn еще конечно для работающей в данный момент базы (есть открытые файлы) ключик семьзиповый добавить, но это уже мелочи жизни

Всего записей: 189 | Зарегистр. 28-03-2007 | Отправлено: 02:11 03-01-2009
Zloy_Gelud



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

Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 00:55 04-01-2009
zzxx1488

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\test.txt set flashdrv=%%i
 
или если файл test.txt может нежданчиком оказаться еще на каком-то диске ,  
то возможен такой вариант, запустить батник с флешки:
 
set zz=%random%%random%
echo .>%zz%
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\%zz% set flashdrv=%%i
del /f %zz%
echo %flashdrv%

Всего записей: 62 | Зарегистр. 04-10-2008 | Отправлено: 01:58 04-01-2009 | Исправлено: zzxx1488, 02:08 04-01-2009
igorantonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Огромное спасибо. Не поделитесь ссылкой на первоисточник по данному вопросу?

Всего записей: 28 | Зарегистр. 22-10-2004 | Отправлено: 02:08 04-01-2009
Zloy_Gelud



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zzxx1488
Спасибо, такой способ мне известен. Думал есть какая-то переменная определяющая путь к каталогу, в котором расположен запущенный батник.
 
Добавлено:
А какой командой прерывается цикл FOR?

Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 02:10 04-01-2009
ilyamaina

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

Всего записей: 60 | Зарегистр. 11-05-2008 | Отправлено: 02:47 04-01-2009 | Исправлено: ilyamaina, 02:50 04-01-2009
Elroir



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

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


Код:
 
@echo off
echo Batch file directory - %~dp0
 

 

Цитата:
А какой командой прерывается цикл FOR?

goto на какую-нибудь метку вне цикла.
 
igorantonov

Цитата:
Не поделитесь ссылкой на первоисточник по данному вопросу?


Цитата:
 
    %PATH:~10,5%
 
would expand the PATH environment variable, and then use only the 5
characters that begin at the 11th (offset 10) character of the expanded
result.  If the length is not specified, then it defaults to the
remainder of the variable value.  If either number (offset or length) is
negative, then the number used is the length of the environment variable
value added to the offset or length specified.
 

Взято из справки команды set

Код:
set /?


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:58 04-01-2009
Zloy_Gelud



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir -- %~dp0 - то что надо! Премного благодарен!
 
Добавлено:
Elroir
Насчет этого:

Цитата:
И как можно выбрать первую доступную букву диска?

не поможешь?

Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 03:23 04-01-2009
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zloy_Gelud
Немного переделанное решение от zzxx1488-а:

Код:
 
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i: (set "first=%%i" && goto next)
:next
echo First drive letter - %first%
 

 
 
 
Добавлено:
ilyamaina

Цитата:
можно ли с помощью батника выключать звук на компе?

С помощью утилиты nircmd:

Код:
 
nircmdc mutesysvolume 1
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:40 04-01-2009
ilyamaina

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

Цитата:
С помощью утилиты nircmd

Спасибо, попробуем.
Но с помощью программ (любой планировщик) вырубить звук не проблема. Но держать отдельную прогу ради одного действия бестолково. Я имел ввиду именно bat-файл.
Весь смысл в том, чтобы выключить звук при выходе из спящего режима, т.к. засыпаешь под фильм какой-нибудь, а потом в 6 утра под него же и просыпаешся, что не всегда нужно .

Всего записей: 60 | Зарегистр. 11-05-2008 | Отправлено: 11:16 04-01-2009
Zloy_Gelud



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Я наверно не совсем правильно задал вопрос..Мне нужно получить букву диска, которой еще нет в системе. Например, имеются локальные диски (С:, D:), дисковод (А:), приводы (Е:, F:), ну может есче что-то. Так вот, нужно получить букву, которая еще не зарезервирована в системе.

Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 22:31 05-01-2009 | Исправлено: Zloy_Gelud, 22:32 05-01-2009
Elroir



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

Код:
 
@echo off
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if not exist %%i: (set "first=%%i" && goto next)  
:next  
echo First unused drive letter - %first%
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:51 05-01-2009
Zloy_Gelud



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

Цитата:
First unused drive letter - E

А как я уже писал постом выше, что в системе уже имеется привод под буквой Е: - значит ее (букву) использовать уже нельзя..
 
Добавлено:
И есче вопросик..можно ли установить переменную в одном бат-файле и использовать ее (значение) в другом батнике?

Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 23:17 05-01-2009
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zloy_Gelud
Точно, вот про приводы я и забыл. Тогда так:

Код:
 
@echo off
setlocal enabledelayedexpansion
set "list="
for /f "tokens=*" %%a in ('fsutil fsinfo drives ^| more') do set "list=!list! %%a"
set "list=%list:~8%"
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
echo %list% | findstr /i "%%i">nul
if errorlevel 1 (set "first=%%i" && goto next)
)  
:next  
echo First unused drive letter - %first%
 

 

Цитата:
можно ли установить переменную в одном бат-файле и использовать ее (значение) в другом батнике?

Если используется та же самая сессия cmd - можно. Если нет, то надо устанавливать глобальную переменную, с помощью сторонних утилит (например setenv.exe).


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:33 06-01-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 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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru