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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите написать батничек плиз.  
Значит есть файл fff.dbf в папке1 его переносим в папку2 с именем %Date%.dbf (текущее число). В папке1 через некоторое время опять появляется файл fff.dbf он всегда имеет одно и тоже название. Его нужно перенести в папку2 но с другим названием файла %Date%_1.dbf
Потом это повторяется. И в папке2 в конце дня будет  
%Date%, %Date%_1, %Date%_2, %Date%_3 и т.д.
 
Сильно с пакетными командами не разбирался сильно не шарю. А на другом писать смысла нет. Используя Rename не красиво.  
 
Подскажите решение заранее спасибо.    

Всего записей: 3 | Зарегистр. 25-08-2008 | Отправлено: 13:53 26-08-2008
01MDM



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

Код:
 
@echo off
setlocal
 
if not exist "1\fff.dbf" goto:eof
if not exist "2\%date%.dbf" move "1\fff.dbf" "2\%date%.dbf" && goto:eof
 
set cnt=0
for /f "tokens=2 delims=_." %%i in ('dir /b "2\%date%_*" 2^>nul') do set /a cnt+=1
 
set /a cnt+=1
move "1\fff.dbf" "2\%date%_%cnt%.dbf"  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:22 26-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Поставил кавычки здесь (вариант№4):
 
@echo off  
setlocal  
set "fld=%computername%_%date%"  
 
и теперь работает как надо, спасибо! Винда стоит VIENNA XP

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 14:27 26-08-2008 | Исправлено: azamapendrus, 15:42 27-08-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
azamapendrus
 
Лучше убери "a" и "b". Если даже floppy есть, то почти не используется в последнее время.
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:07 26-08-2008
Smitis



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

Цитата:
Как при помощи батника завершить текущий сеанс пользователя и войти под другим    
(Логин, пароль , домен)-обязательно.  

Входить автоматом? Можно попробовать через настройку autologon-на через реестр.

Всего записей: 2469 | Зарегистр. 09-02-2003 | Отправлено: 15:07 26-08-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Smitis
Как именно - если можно закрепите примерчиком!

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 15:13 26-08-2008
Smitis



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

Цитата:
Как именно - если можно закрепите примерчиком!

Примерчика нет, могу на словах:
- записать в реестр информацию для автологона через reg.exe или reg-файл
- перезагрузиться
- удалить через автозагрузку, при необходимости, информацию из реестра.
Не знаю, возможно ли это для домена. Скорее всего, да. При необходимости записать нужную информацию в реестр. Надо экспериментировать.
 
 
Добавлено:
http://forum.oszone.net/post-304003.html
http://support.microsoft.com/kb/315231/ru

Всего записей: 2469 | Зарегистр. 09-02-2003 | Отправлено: 15:25 26-08-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Smitis
Благодарю за наводку...
Но не откажусь от примерчиков в батнике(для тех кто это сможет написать)

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 16:10 26-08-2008
Zubov1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
 
Спасибо тебе большое. У меня похожий был тока не работал. А этот что надо. Еще раз Спасибо.

Всего записей: 3 | Зарегистр. 25-08-2008 | Отправлено: 05:58 27-08-2008
Smitis



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

Код:
 
@echo off
set "hk_wl=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
:: Включить autologon
reg add "%hk_wl%" /v AutoAdminLogon /t REG_SZ /d 1 /f
:: Чтобы работало и при LogOff, а не только при перезагрузке
reg add "%hk_wl%" /v ForceAutoLogon /t REG_SZ /d 1 /f
:: Количество автоматических входов, после которого autologon будет отключен
:: (закоментировано, т.е. при logoff не используется)
::reg add "%hk_wl%" /v AutoLogonCount /t REG_DWORD /d 1 /f
:: Имя пользователя
reg add "%hk_wl%" /v DefaultUserName /t REG_SZ /d User /f
:: Пароль
reg add "%hk_wl%" /v DefaultPassword /t REG_SZ /d 12345 /f
:: Домен ???
::reg add "%hk_wl%" /v DefaultDomainName /t REG_SZ /d Domen /f
 
:: Перезагрузка
::shutdown -r -t 0
:: или LogOff
shutdown -l
exit
 

Замечания:
- Не проверял в домене
- Дожны быть права на запись в реестр в соотвествующие ветки
- Нет автоматической отмены autologon-а


----------
Разум когда-нибудь победит

Всего записей: 2469 | Зарегистр. 09-02-2003 | Отправлено: 13:55 27-08-2008 | Исправлено: Smitis, 13:58 27-08-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilich
Есть вот такая утилита http://www.softtreetech.com/24x7/archive/51.htm
Не подойдет тебе? Про домен ничего не написано правда. Сам не пользовался и не пробовал.

Всего записей: 1668 | Зарегистр. 08-12-2004 | Отправлено: 15:07 27-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача :
Во всех файлах *.txt (находящихся в разных директориях) во всех строках после знака " ? " вставило бы текст "Ответ на вопрос :"
 
Пример :  
........... во сколько раз? Ответ на вопрос: Исключение из правил...........

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 15:41 27-08-2008
01MDM



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

Цитата:
Пример :  
........... во сколько раз? Ответ на вопрос: Исключение из правил...........

 
Не лучшее решение при помощи голого батника парсить текст
Вариант с потерей возможного форматирования (отступы, пустые строки, знаки "%" и другие непредвиденные ошибки).

Код:
 
@echo off
setlocal
chcp 1251 1>nul
 
for /f "tokens=*" %%i in ('dir /b /s "test\*.txt"') do call:parse "%%i"
goto:eof
 
:parse
for /f "tokens=*" %%i in ('type %1') do call:paste "%%i"
for /f "tokens=2* delims==" %%i in ('set string_') do (
    echo %%i %%j 1>>"%~1.tmp"
)
move /y  "%~1.tmp" %1
set cnt=
set string=
goto:eof
 
:paste
set /a cnt+=1
set cnt=000%cnt%
set cnt=%cnt:~-4%
 
set "string=%~1"
set "string=%string:?=? Ответ на вопрос:%"
 
set "string_%cnt%=%string%"
   
 

Где "test" - корневая папка

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 05:39 28-08-2008 | Исправлено: 01MDM, 05:39 28-08-2008
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
чет туплю по-страшному...
Есть строка с разными путями через точкасзапятой (количество может быть любым!)
Надо вывести все пути последовательно. Как???
Код:
@ECHO OFF
SET MINGW=C:\MinGW\bin;%ProgramFiles%\CodeBlocks\bin
ECHO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FOR %%d IN (%MINGW%) DO echo %%d
ECHO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FOR /F "usebackq delims=;" %%d IN ('%MINGW%') DO echo %%d
ECHO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FOR /F "delims=;" %%d IN ("%MINGW%") DO echo %%d
ECHO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Ни один из вариантов не катит

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 13:50 28-08-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Очень даже классно получилось! Спасибо01MDM

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 13:52 28-08-2008
DCT

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулся с проблемой: нужно батником пропатчить dll-ку (записать пару байт по заданому смещению в файл, вне зависимости от его содержимого). Какой консольной утилитой это можно сделать? Т.е. нужно что нибудь типа команды:
write -offset FF -data FF -file mydll.dll
 Смотрел на скомпиленный под винду юниксовый patch.exe - он вроде бы такого не умеет...

Всего записей: 784 | Зарегистр. 22-12-2005 | Отправлено: 15:43 28-08-2008 | Исправлено: DCT, 15:48 28-08-2008
Elroir



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

Цитата:
Надо вывести все пути последовательно. Как???


Код:
 
@echo off
setlocal
SET MINGW=C:\MinGW\bin;%ProgramFiles%\CodeBlocks\bin
call :print "%MINGW%"
goto :EOF
:print
if "%~1"=="" goto :EOF
for /f "tokens=1,* delims=;" %%a in ("%~1") do (echo %%a & call :print "%%b")
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:00 28-08-2008
DCT

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сам спрашивал, сам себе и отвечаю
http://www.kuwanger.net/hexalter.zip
Именно то, что я искал!

Всего записей: 784 | Зарегистр. 22-12-2005 | Отправлено: 18:03 28-08-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть много батников (более 30шт)
в них надо заменить путь,  
был T:\CD    надо T:\vit\CD
 
Можно ли это сделать?
А то батник который для "mozers" попробовал и не получилось ( (я не смог корректно отредактировать)
 
 
И ещё!
можно ли задать такой алгоритм, чтобы батник искал на флешке (путь один и тот-же) T:\vit\cd\..... (много папок внутри)
и скопировал в папку C:\temp  все файлы , с датой ранее чем -14 дней от текущей даты (сегодня 28-08-08, соот. файлы позднее чем 14-08-08) но список файлов какие надо скопировать батник будет брать из файла C:\Temp\Base.txt
 
ARB#DD0725#0001.ANS
 
формат файлов ACN#0725#*.ANS , AMS#DD0725#*.ANS , ARB#DD0725#*.ANS   ( DD0725 - это дата)
а формат файла Base.txt (ну можно и др. формат задать, но то что там будет это список - это точно)
Acn
Ams
Arb

Всего записей: 1358 | Зарегистр. 28-10-2007 | Отправлено: 19:03 28-08-2008 | Исправлено: vitrzn, 19:29 28-08-2008
01MDM



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

Цитата:
есть много батников (более 30шт)

 

Код:
 
sed -i "s;T:\\CD;T:\\vit\\CD;g" *.cmd
 

 

Цитата:
 
C:\> chcp 1251
Текущая кодовая страница: 1251
 
C:\> sed --version
GNU sed версия 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
Это свободное программное обеспечение; условия его копирования смотрите в
исходных текстах. Не предоставляется НИКАКОЙ гарантии; даже гарантии
ПРИГОДНОСТИ ДЛЯ ПРОДАЖИ или ПРИМЕНИМОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, в той мере,
в которой это может быть допущено законодательством.
 
C:\>
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:23 28-08-2008 | Исправлено: 01MDM, 19:27 28-08-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