Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 9

Автор: Free_Soft
Дата сообщения: 06.09.2010 11:54
wolf0425

Код: set fldr=%~dp0
set cpath=%fldr:~0,-1%
pushd "%~dp0%" && (
attrib %cpath% +h +s
)
popd
Автор: wolf0425
Дата сообщения: 06.09.2010 12:02
что-то мне кажется, что у тебя путь с пробелами, а кавычки ты зачем-то экономишь.

Код: set "cpath=%~dp0"
set "cpath=%cpath:~0,-1%"
attrib "%cpath%" +h +s
Автор: Free_Soft
Дата сообщения: 06.09.2010 12:06
wolf0425
да, ступил. кавычки форева. Пасиб
Автор: Julevar
Дата сообщения: 06.09.2010 13:28

Цитата:
Не совсем понятно зачем заморачиваться сменной mac'а через WMI. Лично я использую древний, проверенный временем хинт - через реестр. Причем при наличии прямых рук, можно написать и батник, но это уже другое дело.
Итак, открываем regedit...


Не совсем понятно, зачем заморачиваться с реестром?

Автор: bomzzz
Дата сообщения: 06.09.2010 14:24
и какое отношение 12345 имеет к масасдресу
Автор: Deep2007
Дата сообщения: 06.09.2010 14:33
Помогите реализовать: В одной папке с cmd-файлом лежит файл (1.txt). Сmd-файл делает в тексте последовательно такие замены:

1. "^p " на "@@@" - "Знак абзацаПробелПробелПробел" на "@@@"
2. "^p" на " " - "Знак абзаца" на "Пробел"
3. "@@@" на "^p" - "@@@" на "Знак абзаца"
4. " " на " " - "ПробелПробел" на "Пробел"
5. " " на " " - "ПробелПробел" на "Пробел"

Образец текста:

Цитата:

Сейчас, по собственному выражению, он "занимается предпринимательской
деятельностью" - возглавляет аналитический центр "Намакон", является почетным
президентом Ассоциации ветеранов подразделений специального назначения и
спецслужб "Вымпел-Союз". Автор книг "Нужная работа", "Вымысел исключен".


Мысли о разведке

- Юрий Иванович, если кто-то решит написать историю нелегальной разведки, с
какого времени ему придется начинать?
- Можно начинать с Александра Македонского, можно - с древних китайцев, а
еще лучше начинать с Библии. Самое первое агентурное донесение Древней Руси,
которое сохранилось где-то в архивах военной разведки, это нацарапанное на
бересте: "Чудь встала на карелов".


Пытался осилить сам, но не выходит. Бог не дал, видно...
PS А надо все это для того, что я уже забодался править текст эл. книг из инета... И в Worde заменять - тоже забодался...
Автор: bomzzz
Дата сообщения: 06.09.2010 14:51
ворд тебя не устравиает?
Автор: Deep2007
Дата сообщения: 06.09.2010 15:14
Это все я сейчас и делаю в Ворде, и выходит длинно. Самые непричесанные документы идут в txt обычно. Имхо, проще обработать сам сырой txt батником (все же быстрее), а в Word править орфографию.
Автор: bomzzz
Дата сообщения: 06.09.2010 15:20
в ворде есть макросы какие то, или вообще бейсик встроенный, но на его освоение явно глобально больше времени потребуется.
помогут тебе тут , подожди когда появится кто SED-ом пользуется часто.
Автор: Free_Soft
Дата сообщения: 06.09.2010 15:45
wolf0425

Код: for /f "delims=" %%a in (' dir /b /ad . ') do if /i "%%~xa" equ ".tmp" rd /s /q "%%~a"
Автор: faithful
Дата сообщения: 06.09.2010 21:15
Deep2007

Цитата:
А надо все это для того, что я уже забодался править текст эл. книг из инета... И в Worde заменять - тоже забодался...


В батнике спецсимволы (0х0А, 0х0D) не обработать. Я делаю или с помощью perl или в ворде на VBScript.

Например VBScript:
(Жмем Alt+F11, дважды щелкаем на ThisDocument и вставляем)

Код: Sub ProcessText()
Set doc = ActiveDocument.Content
doc.Find.Execute findText:="^p ", replaceWith:="@@@", Replace:=wdReplaceAll
doc.Find.Execute findText:="^p", replaceWith:=" ", Replace:=wdReplaceAll
doc.Find.Execute findText:="@@@", replaceWith:="^p", Replace:=wdReplaceAll
doc.Find.Execute findText:=" ", replaceWith:=" ", Replace:=wdReplaceAll
doc.Find.Execute findText:=" ", replaceWith:=" ", Replace:=wdReplaceAll
End Sub
Автор: bomzzz
Дата сообщения: 06.09.2010 21:36
я уж теепрь подумал, что ты просто свой мас адрес забил случайным числом на картинке, но у меня такой вкладки вообще нет, так что не смог проверить.
Автор: faithful
Дата сообщения: 06.09.2010 21:40
Free_Soft

Цитата:
for /f "delims=" %%a in (' dir /b /ad . ') do if /i "%%~xa" equ ".tmp" rd /s /q "%%~a"

а как это вообще работает?!
Запрашиваешь список каталогов, а сравниваешь расширение файлов, при этом хочешь удалить ВСЮ директорию?
В любом случае, если анализируешь расширения файлов, нужно их и запрашивать:
dir /b /a-d ., при этом можно сразу фильтровать расширение:
'dir /b /a-d .^|find /i ".tmp"' - получишь только строчки с этим расширением.
Тогда команда for /f %%a in ('dir /b /a-d .^|find /i ".tmp"') do @echo %%~pa выведет список каталогов, содержащих искомые файлы.
Автор: Free_Soft
Дата сообщения: 06.09.2010 21:42
Еще задача вот. Из батника запущен екзешник командой start /wait.
Нужно еще до закрытия екзешника, т.е. ДО полного выполнения команды start /wait принудительно его прихлопнуть.
команда
Код: taskkill /t /f /im my.exe
Автор: faithful
Дата сообщения: 06.09.2010 21:57
bomzzz
может поможет: http://forum.ru-board.com/topic.cgi?forum=62&topic=18333&start=7#8

Добавлено:
Free_Soft
start /wait говоришь?!

Цитата:
WAIT Запуск приложения с ожиданием его завершения.

Надо или без wait, или до start /wait делать другой start где и килять.
А зачем такие извращения?!


Цитата:
так там не о файлах речь, а о папках, имена которых заканчиваются на .tmp.

Понял. Тогда все равно лучше фильтровать по расширению уже при получении списка, тогда останется только проверять на предмет совпадения с переменной cpath
for /f %%a in ('dir /b /ad .^|find /i ".tmp"') do if %%~pa equ "%cpath%" rd /s /q "%%a"
Автор: bomzzz
Дата сообщения: 06.09.2010 22:12
не знаю чем мне это поможет, в любом случае я мас адрес менять не буду потому что у меня сеть отвалится. уже сколько провайдеров было у всез к мас адресу привязано. разве попробовать чужой перехватить
Автор: Free_Soft
Дата сообщения: 06.09.2010 22:21
faithful

Цитата:
А зачем такие извращения?!

О, это сложно объяснить))) Но выход нашел
Автор: wolf0425
Дата сообщения: 07.09.2010 00:50
faithful
Цитата:
а как это вообще работает?!
Запрашиваешь список каталогов, а сравниваешь расширение файлов, при этом хочешь удалить ВСЮ директорию?
расширения бывают не только у имен файлов, но и у имен директорий тоже.


Free_Soft, насколько я понимаю - ты хочешь чего-то типа такого:

Код: for /f "delims=" %%a in (' dir /b /ad . ') do if /i "%%~xa" equ ".tmp" if /i "%~dp0" neq "%%~fa\" rd /s /q "%%~a"
Автор: Free_Soft
Дата сообщения: 07.09.2010 08:52
wolf0425

Код: for /f "delims=" %%a in (' dir /b /ad . ') do if /i "%%~xa" equ ".tmp" if /i "%~dp0" neq "%%~fa\" rd /s /q "%%~a"
Автор: Mark_Titov
Дата сообщения: 07.09.2010 15:04
Ребят, подскажите в чем может быть проблема...
Есть батник следующего содержания -

Код: @Echo Off
:ping
cls
set /a day_sum=0
set /a day_count=0
set /a mes_sum=0
set /a mes_count=0
set /a count=count+1
Title Pinging number %count%
(set /p site=<%systemdrive%\IP.txt) 2>nul
set "mes=%date:~-7%"
2>nul MD "%systemdrive%\%mes%\%date%"
set "Log=%systemdrive%\%mes%\%date%\log.txt"
1>nul 2>&1 MD "%systemdrive%\%mes%\%date%"
set "Log=%systemdrive%\%mes%\%date%\log.txt"
for /f "tokens=2 delims=()" %%a in ('ping -n 4 %site%') do 1>>%log% echo.%date% %time:~,8% %%a
for /f "tokens=3 delims=%% " %%a in (%systemdrive%\%mes%\%date%\log.txt) do set /a day_sum += %%a*100 & set /a day_count += 1
set /a day_average=(%day_sum%)/(%day_count%) +10000
set /a day_average_int = %day_average:~0,-2% -100
set mes_
sleep 20
goto :ping
Автор: bomzzz
Дата сообщения: 07.09.2010 15:08
Free_Soft
в найстройках пасматри вроде есть такой флаг, только в батнике это врядли удасться реализовать, может если сделать чтоб ответ программа помещала в какой то служебный файл а не возвращала в еррорлевел

Добавлено:
запустить можно второй батник для бокса
Автор: 01MDM
Дата сообщения: 07.09.2010 20:16
Mark_Titov

Странно, что в лог вообще пишутся разные значения переменной %time%. Насколько помню, ping сначала отрабатывает, а уж потом, разом, весь свой вывод выдает в цикл for.
Автор: king_stiven
Дата сообщения: 07.09.2010 20:20
Mark_Titov

Цитата:
setlocal enabledelayedexpansion и переменные окружения

используй setlocal enabledelayedexpansion, всё равно у тебя нет ограничений, так как воскл знаков нет.
Автор: Mark_Titov
Дата сообщения: 07.09.2010 20:49
king_stiven

Цитата:
используй setlocal enabledelayedexpansion, всё равно у тебя нет ограничений, так как воскл знаков нет.

Спасибо, попробую...


Цитата:
Странно, что в лог вообще пишутся разные значения переменной %time%. Насколько помню, ping сначала отрабатывает, а уж потом, разом, весь свой вывод выдает в цикл for.

Почему странно...?
Автор: Free_Soft
Дата сообщения: 07.09.2010 20:50
А можно ли из батника прописать сервера в DNS?
Автор: bomzzz
Дата сообщения: 07.09.2010 20:58
да можно. через wmi точно

Добавлено:
ECHO OFF
COLOR 9F
CLS
Nslookup
pause

Добавлено:
ECHO OFF
COLOR 9F
CLS
Ipconfig /?
pause

Добавлено:
это наверно все что без вми можно сделать. поищи даже тут на форуме наверняка меняли вбс скриптами эти днсы, вот есть ли для батника - если повезет

Добавлено:
http://www.astahost.com/info.php/switch-network-settings-batch-files_t9048.html
Switch Network Settings With Batch Files - A quick way to change IP, Gateway, DNS
Автор: wolf0425
Дата сообщения: 07.09.2010 21:11

Цитата:
А можно ли из батника прописать сервера в DNS?
можно.
тебе сюда - netsh interface ip set dns /?

Автор: Free_Soft
Дата сообщения: 07.09.2010 21:14
wolf0425
Спасибо, то что нужно

Добавлено:
bomzzz
Тоже спасибо, хорошая статья
Автор: Mark_Titov
Дата сообщения: 07.09.2010 22:16

Цитата:
используй setlocal enabledelayedexpansion, всё равно у тебя нет ограничений, так как воскл знаков нет.

Не помогает, в чем прикол не могу понять...
wolf0425 на верняка знает, просто не хочет помогать наверное...
Автор: bomzzz
Дата сообщения: 07.09.2010 22:29
Mark_Titov
ну так ты конвертируешь батник в екзешник. а конверторы не поддерживают все команды и все обороты. это надо тебе как в отладчике отладить каждую команду своего батника и проверить правельно ли он выполняется. и подолбрать такие команды которые твой конвертер будет поддерживать.
и вообще перезжай на вбс скрипты. а потом на С

Добавлено:
с батниками эти выипоны с конвертацией в екзешник ну совершенно не нужны. вбс срипты многие отключают - вот уменя отключены. там это еще какой то смысл имеет. учите нормлаьные языки програмирования. вы хотите на батниках решать задачи ... более широкие задачи ставите чем батники обычно решают

Добавлено:
батник это автоматизация какой то рутинной задачи.

Добавлено:
http://bellard.org/tcc/ вот маленький компилятор для С.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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