Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: fristfrist
Дата сообщения: 11.05.2009 20:04
для полной ясности выложу мой батник

Цитата:

@echo off
netsh interface ip show config "MyLan" | find /i "Нет" >>null

rem проверяем включен или нет DHCP
if %errorlevel% == 1 (goto 1d) else (goto 2d)

:1d
rem DHCP включен, меняем на статику
netsh interface ip set address name="MyLAN" static 198.162.3.9 255.255.255.0 198.162.3.1 1
netsh interface ip set dns name="MyLAN" static 198.162.0.1
netsh interface ip add dns name="MyLAN" 172.12.109.58 2
netsh interface ip add dns name="MyLAN" 172.12.109.76 3
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0014" /v NetworkAddress /t REG_SZ /d 001С58570E65 /f
goto EOF

:2d
rem DHCP выключен, включаем заново
netsh interface ip set address name="MyLAN" dhcp
netsh interface ip set dns name="MyLAN" source=dhcp
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0014" /v NetworkAddress /f
goto EOF

:EOF

т.е. что бы изменения вступили в силу нужно всего на всего перезагрузить "MyLan"
Автор: timka85
Дата сообщения: 11.05.2009 20:49
01MDM

Цитата:
Поясни, что значит выбранная по алфавиту папка

что то похожее я просил уже ранее, но там нужен был запуск ярлыков через батник с таким приоритетом алфавитного порядка (прим. #2_Link_Starter запускает второй линк идущий по списку). А сейчас, с тем же принципом определения, мне нужно перемещать определенную папку в нужное место и ее же оттуда в конце возвращать обратно. Еще раз хочу напомнить, что папки могут быть с совершенно разными именами без какого-либо постоянного значения.
Автор: HaK1R
Дата сообщения: 11.05.2009 21:02
fristfrist
Я думаю что, чтобы изменения вступили в силу достаточно перезапустить подключение

Код:
::Отключение
rasdial MyLAN /disconnect
::Включение
rasdial "MyLAN" Login password
Автор: Ortios
Дата сообщения: 11.05.2009 22:03
01MDM,
Спасибо, классно! А то мыслей никаких не было. Может из-за праздников.
Автор: fristfrist
Дата сообщения: 11.05.2009 22:06
HaK1R

Цитата:
Я думаю что, чтобы изменения вступили в силу достаточно перезапустить подключение


не работает, как я думаю потому, что у меня подключение локальной сети, а не модем
Автор: HaK1R
Дата сообщения: 11.05.2009 23:02
fristfrist
Я по WiFi сижу так что на счет локалки проверить не могу
посмотри здесь

Код: netsh lan /?
Автор: 01MDM
Дата сообщения: 11.05.2009 23:12
timka85
Ну батник-то попробовал? Там выбираешь нужную тебе папку по индексу:

Код:
[1] folder 1
[2] folder 2
[3] еще папка
...
[n] последняя папка из списка
------
> здесь вводишь нужный номер папки
Автор: fristfrist
Дата сообщения: 12.05.2009 00:28
HaK1R
сп, буду смотреть пока что пишет:

Цитата:
Служба автоматической настройки проводной сети (dot3svc) не выполняется.


Добавлено:
оно его просто на подленность проверяет
Автор: rosalin
Дата сообщения: 12.05.2009 10:03
Ребята я в этом деле новичек помогите изменить код


Код: @echo off

for /f "tokens=2,3 delims=. " %%a in ('dir /a:-D /-c /4') do mkdir %%b\%%a 2>nul
for /f "tokens=2,3,6 delims=. " %%a in ('dir /a:-D /-c /4') do move %%c.msg %%b\%%a 2>nul
for /l %%a in (2000,1,2010) do call :months %%a
goto :EOF

:months
for /l %%b in (1,1,9) do rar m -ep %1.0%%b.rar %1\0%%b\*.*
for /l %%b in (10,1,12) do rar m -ep %1.%%b.rar %1\%%b\*.*
Автор: yahan2
Дата сообщения: 12.05.2009 12:29
Хочу сделать проверку, что бы имя файла было не больше 8 символов, а расширение не больше 3 + в файле не должно быть кириллических символов

Нашел, что %~x3 %~n3 - дают имя файла и расширение отдельно
Но как в bat-нике определить длину полученной строки?
Я уже не говорю на проверку символов


Автор: rosalin
Дата сообщения: 12.05.2009 14:04
Сделал так

Код: for /f %%D in ('dir /ad/b/s ^|sort /r') do rd %%D
Автор: romrub
Дата сообщения: 12.05.2009 14:50
yahan2

Цитата:
Хочу сделать проверку, что бы имя файла было не больше 8 символов, а расширение не больше 3 + в файле не должно быть кириллических символов
Нашел, что %~x3 %~n3 - дают имя файла и расширение отдельно
Но как в bat-нике определить длину полученной строки?

насчет подсчета длины строки буквально несколько постов назад 01MDM уже подсказал решение ..

Но может быть в данном случае и не обязательно считать длину ?
если имя больше 8 символов его короткое имя будет не совпадать с длинным, этим и воспользуемся

пусть %%i - переменная for-цикла
if "%%~ni"=="%%~sni" значит имя файла <=8 символов else имя файла >8 символов или содержит кириллицу.
Аналогично и для расширения: if "%%~xi"=="%%~sxi"

будет работать при условии, что на файловой системе включена поддержка формирования коротких 8.3-имен.



Добавлено:
rosalin

Цитата:
Код:for /f %%D in ('dir /ad/b/s ^|sort /r') do rd %%D


Грамотно ли это


если все эти временные каталоги предварительно формировать в специальном выделенном каталоге %tempDir%, который создавать каждый раз перед запуском основного батника, то проще видимо будет выполнить команду:
RD /s %tempDir%
или молча
RD /s /q %tempDir%

исчезнет все дерево подкаталов, включая и файлы

или я упустил что-то важное в задаче и в этих каталогах должно что-нибудь оставаться ?

Автор: rosalin
Дата сообщения: 12.05.2009 15:06
romrub

Цитата:
если все эти временные каталоги предварительно формировать в специальном выделенном каталоге %tempDir%, который создавать каждый раз перед запуском основного батника, то проще видимо будет выполнить команду:
RD /s %tempDir%
или молча
RD /s /q %tempDir%


Все это делаю для решения следующей задачи
есть батник
после его отработки остаються пустые каталоги
Автор: timka85
Дата сообщения: 12.05.2009 15:49
01MDM
ваш код наконец заработал у меня! Была некая неточность в путях, но я ее исправил. За батник спасибо, но мне, если честно, нужен был не совсем батник... Я планировал создать, как минимум 5 батников и потом конвертировать их в .ехе Стартеры через bat2exe, чтобы не видно было окно, да и нажатий мышкой так меньше. Получается, увидел нужную папку для перемещения, тогда и запускай по порядковому названию Стартер. Понимаете?
Автор: Mew
Дата сообщения: 12.05.2009 16:05
Всем привет!
По чьему-то совету из интернета сделала такой батник для бэкапа:

echo off
net use x: /delete /Y
net use x: \\voxco2\d$

C:\WINDOWS\system32\ntbackup.exe backup "@C:\Documents and Settings\Dinara.VOXCO1\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\Voxco1_Backup.bks" /a /d "Набор создан 09.05.2009 в 22:26" /v:yes /r:no /rs:no /hc:off /m normal /j "Voxco1_Backup" /l:s /f "\\voxco2\d$\Backup Files\voxco1_Backup.bkf"

erase "x:\Backup Files\voxco1_Backup14.bkf" /Q
move "x:\Backup Files\voxco1_Backup13.bkf" "x:\Backup Files\voxco1_Backup14.bkf"
move "x:\Backup Files\voxco1_Backup12.bkf" "x:\Backup Files\voxco1_Backup13.bkf"
move "x:\Backup Files\voxco1_Backup11.bkf" "x:\Backup Files\voxco1_Backup12.bkf"
move "x:\Backup Files\voxco1_Backup10.bkf" "x:\Backup Files\voxco1_Backup11.bkf"
move "x:\Backup Files\voxco1_Backup09.bkf" "x:\Backup Files\voxco1_Backup10.bkf"
move "x:\Backup Files\voxco1_Backup08.bkf" "x:\Backup Files\voxco1_Backup09.bkf"
move "x:\Backup Files\voxco1_Backup07.bkf" "x:\Backup Files\voxco1_Backup08.bkf"
move "x:\Backup Files\voxco1_Backup06.bkf" "x:\Backup Files\voxco1_Backup07.bkf"
move "x:\Backup Files\voxco1_Backup05.bkf" "x:\Backup Files\voxco1_Backup06.bkf"
move "x:\Backup Files\voxco1_Backup04.bkf" "x:\Backup Files\voxco1_Backup05.bkf"
move "x:\Backup Files\voxco1_Backup03.bkf" "x:\Backup Files\voxco1_Backup04.bkf"
move "x:\Backup Files\voxco1_Backup02.bkf" "x:\Backup Files\voxco1_Backup03.bkf"
move "x:\Backup Files\voxco1_Backup01.bkf" "x:\Backup Files\voxco1_Backup02.bkf"
move "x:\Backup Files\voxco1_Backup.bkf" "x:\Backup Files\voxco1_Backup01.bkf"

net use x: /delete /Y

Он работает, но... Нельзя ли сделать чтобы при переименовании файлов сохранялись даты создания файлов? Заранее спасибо!
Автор: HaK1R
Дата сообщения: 12.05.2009 17:33
Mew
А что если при создании бэкапа в название писать еще текущую дату, она и будет датой создания?

Добавлено:
yahan2
А вот так попробуй

Код:
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%i in ('dir /a-d /b') do (call:1 "%%~ni" "%%~xi")
pause
goto:eof

:1
set "name=%~1"
set "broadening=%~2"
set /a a=0
if "!name!"=="!name:~0,8!" (set /a a+=1)
if "!broadening:~1!"=="!broadening:~1,3!" (set /a a+=1)
if !a!==2 (echo !name!!broadening!)
goto:eof
Автор: Mew
Дата сообщения: 12.05.2009 18:16
HaK1R

Цитата:
А что если при создании бэкапа в название писать еще текущую дату, она и будет датой создания?

То есть добавить в имя файла %date% ?
Тогда и все эти переименования не нужны. Осталось только придумать как удалять файлы по маске старее установленной даты.
FORFILES попробовать?

Добавлено:
@echo off
net use x: /delete /Y
net use x: \\voxco2\d$

C:\WINDOWS\system32\ntbackup.exe backup "@C:\Documents and Settings\Dinara.VOXCO1\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\Voxco1_Backup.bks" /a /d "Набор создан 09.05.2009 в 22:26" /v:yes /r:no /rs:no /hc:off /m normal /j "Voxco1_Backup" /l:s /f "\\voxco2\d$\Backup Files\voxco1_Backup_%date%.bkf"

FORFILES /P "x:\Backup Files" /M voxco1_*.bkf /D -14 /C "cmd /C del /q /f @FILE"

net use x: /delete /Y

Нарисовала такое. Правильно это?
Автор: romrub
Дата сообщения: 12.05.2009 19:23
rosalin

Цитата:
Сделал так
Код:
for /f %%D in ('dir /ad/b/s ^|sort /r') do rd %%D
Грамотно ли это

Все это делаю для решения следующей задачи
есть батник
после его отработки остаються пустые каталоги


в такой постановке этот скрипт верх изящества

но надежней будет так

Код: for /f "tokens=*" %%D in ('dir /ad/b/s ^|sort /r') do rd "%%D"
Автор: HaK1R
Дата сообщения: 12.05.2009 19:35
Mew

Цитата:
FORFILES /P "x:\Backup Files" /M voxco1_*.bkf /D -14 /C "cmd /C del /q /f @FILE"

У меня нет этого утилита
Автор: romrub
Дата сообщения: 12.05.2009 20:36
Mew

Цитата:
Тогда и все эти переименования не нужны. Осталось только придумать как удалять файлы по маске старее установленной даты.


есть славная утилита purge.exe, которая только и делает, что удаляет файлы заданной старости, но аккуратней, удаляет без предупреждения !
погугли

если не загоняться на решении именно батником, то имхо, лучший вариант

уточнение: purger.exe

Цитата:
    Author: Alexander Gorlach, alex@gorlach.koenig.su
    Home page: http://www.enet.ru/~gorlach/Purger/
    Status:     freeware, You can use this program free on You own risk
    Comments: sorry for my ugly English
Автор: Mew
Дата сообщения: 12.05.2009 20:49
HaK1R

Цитата:
Цитата:FORFILES /P "x:\Backup Files" /M voxco1_*.bkf /D -14 /C "cmd /C del /q /f @FILE"
У меня нет этого утилита

Странно, как же нет? У меня и в w2k3 и в sbs2003 есть по умолчанию. Даже в "Центре справки и поддержки" (в винде) есть ее описание.

romrub

Цитата:
есть славная утилита purge.exe, которая только и делает, что удаляет файлы заданной старости, но аккуратней, удаляет без предупреждения !
погугли

если не загоняться на решении именно батником, то имхо, лучший вариант

Ну коли есть штатное встроенное средство делающее нужное, то этого мне вполне достаточно.
Автор: HaK1R
Дата сообщения: 12.05.2009 22:01
У меня с кодировкой проблемы


Код:
echo Привет
pause
Автор: rosalin
Дата сообщения: 13.05.2009 13:40
romrub

Цитата:
в такой постановке этот скрипт верх изящества

но надежней будет так

Код:for /f "tokens=*" %%D in ('dir /ad/b/s ^|sort /r') do rd "%%D"




скрипт срабатывает
Спасибо
Автор: neon
Дата сообщения: 14.05.2009 11:46
требУется помощь

есть папка, в которУю помещаются файлы такого вида

market_db_200905121548.BAK
market_db_200905121809.BAK
market_db_200905131742.BAK

цифры, это год, мес., день, часы и мин. создания архива.

это архивные копии базы данных.

Задача. Необходимо из множества этих файлов выбрать последний, сжать его с помощью архиватора rar (архиватор постараюсь настроить сам), после Успешного сжатия отправить сжатый файл на заданный диск (простая операция копирования).
Автор: Maza_Faka
Дата сообщения: 14.05.2009 12:47
neon
Попробуйте так:

Код:
@Echo Off

For /F %%A In ('Dir *.BAK /B /O:-D') Do (Rar.exe a %%~nA.rar %%A) & GoTo :EOF
Автор: neon
Дата сообщения: 14.05.2009 13:36
Maza_Faka

не понял где Указывается пУть для копирования
Автор: Maza_Faka
Дата сообщения: 14.05.2009 14:56
neon

Цитата:
где Указывается пУть для копирования


Код:
@Echo Off

Set OutDir=C:\Temp

For /F %%A In ('Dir *.* /B /O:-D') Do (Rar.exe a %%~nA.rar %%A) & (Copy %%~nA.rar %OutDir%) & GoTo :EOF
Автор: neon
Дата сообщения: 14.05.2009 15:49
"Set OutDir=C:\Temp" наверно правильно бУдет "Set OutDir=C:\Temp\", а то он создает файл с именем Temp.

немного доработал опции архиватора, а так работает замечательно. Благодарю.
Автор: Cosmogor
Дата сообщения: 14.05.2009 17:33
Доброго времени суток.

Комрады помогите с утилитой forfiles
Ну никак не получается её найти.
Целый день Гуглю, все ссылки на сайт Микрософта
а там вообще труба, на этом сайте так всё запутано.
Ftp Микрософта , ну совсем не хочет открывается у мня!

Может у кого завалялась она.? Киньте плиз мню на
Sen-sei_1 собака mail.ru

Спс.
Автор: 01MDM
Дата сообщения: 14.05.2009 17:39
Cosmogor
Первая ссылка по запросу "download forfiles"

http://www.dynawell.com/download/reskit/microsoft/win2000/forfiles.zip

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.