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

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

Автор: VisioNRU
Дата сообщения: 22.11.2009 21:58
01MDM
завтра попробую, щас нет возможности. спасибо!
Автор: Vikkywulf
Дата сообщения: 22.11.2009 22:28
wolf0425
Благодарю, буду пробовать.
Автор: kimtan
Дата сообщения: 23.11.2009 01:00
Доброй ночи, уважаемые!
Такой вопрос, просьба:
Можно ли создать такую пинговалку-батник, которая бы пинговала локалку по определенным IP, скажем через секунд 20-30 и при наличии или отсутствии пинга переписывала определенные ключи реестра. Чтобы потом ее подвесить в автозагрузку.
Параметр реестра:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{F61BE54F-3710-4F78-B81F-48B1FEB472B8}\DefaultGateway=192.168.0.6
И параметр:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{F61BE54F-3710-4F78-B81F-48B1FEB472B8}\NameServer=192.168.0.6
Заменять на 192.168.0.1, при условии непрохождения пинга на локальные IP 192.168.0.5 и 192.168.0.8 и при наличии пинга на 192.168.0.1.
А если хотябы один из указанных IP (192.168.0.5 и 192.168.0.8) пингуется, или не пингуется IP 192.168.0.1, возвращать указанные параметры на место - тоесть - 192.168.0.6
Или подскажите, может есть какая-нибудь прожка которая это все делает. Заранее большое спасибо за ответ.
Автор: Vikkywulf
Дата сообщения: 23.11.2009 05:57
wolf0425

Цитата:
set n=0
for %%i in (*.txt) do (
set /a n+=1
call set file%%n%%=%%i
rem чего-то еще
)
set file

Чего-то не получается Сама set в цикле не отрабатывает, даже так:

for %%i in (*.txt) do (
call set file=%%i
Echo %file%
Pause
)

Как заставить работать? И нужна ли call перед set в данном примере?
Автор: BVV63
Дата сообщения: 23.11.2009 06:10
king_stiven
Что такое "Sed"? Никогда про такой не слыхал. И в "Command-line reference A-Z", что в помощи у Виндузы, его нет. Где можно почитать о нём поподробнее?

Цитата:
(эмуляция "grep '.' "):

И про grep тоже не слыхал.

Добавлено:
Можно ли при помощи Sed удалять определённые строки, зная текущую? Напр., удалить строку на 2 позиции выше текущей.
И ещё. Как при использовании Sed указать, с каким файлом нужно работать?
Автор: king_stiven
Дата сообщения: 23.11.2009 10:06
BVV63
Что такое sed, и зачем его едят
Подробностей я здесь разговаривать не буду. В кратце, sed (streaming editor), позволяет обрабатывать огромные объёмы текста, если нужно выполнить над ним шаблонные действия. То есть, заменить то на сё, склеить строки там и сям, удалить то и это.
Как работает sed? Утилита берёт строку текста и пробует к ней применить скрипт редактирования. Затем следующую строку, следующую, и так пока не достигнет конца текста.
Homepage

http://www.gnu.org/software/sed/sed.html
Автор: BlackBerry
Дата сообщения: 23.11.2009 19:21
Помогите написать батник:

В текущем каталоге файлы, чьи имена содержат некую подстроку,
переименовать в имя без этой подстроки
Автор: 01MDM
Дата сообщения: 23.11.2009 20:13
BlackBerry
Ну а где пример названия файла? В общем случае что-то вроде:

Код:
@echo off
setlocal

for %%i in ("*some string*") do call:ren "%%i"
goto:eof

:ren
set "file=%~1"

:check

if exist "%file:some string=%" (
    set "file=1%file%"
    goto:check
)

ren %1 "%file:some string=%"
Автор: wolf0425
Дата сообщения: 23.11.2009 21:04
Vikkywulf

Цитата:
Чего-то не получается Сама set в цикле не отрабатывает, даже так:
for %%i in (*.txt) do (
call set file=%%i
Echo %file%
Pause
)
Вообще-то, если бы ты все-таки запустил мой пример - то понял бы, что как раз set в батнике отрабатывает исправно (там все присвоенные переменные печатались после завершения цикла), а в твоем - не отрабатывает так как тебе хотелось бы echo %file% : cmd трактует весь цикл for как целое и заменяет все %переменные% на их значения в момент старта цикла, а отнюдь не на каждом проходе цикла построчно.
Обходится это примерно так

Код: for %%i in (*.txt) do (
call set file=%%i
call :_print
Pause
)
exit /b

:_print
Echo %file%
exit /b
Автор: Vikkywulf
Дата сообщения: 23.11.2009 23:17
wolf0425
Спасибо! Пример сработал, теперь буду разбираться детально. И ещё, если не трудно, можно рабочий пример с setlocal enabledelayedexpansion?
Автор: wolf0425
Дата сообщения: 24.11.2009 00:51
Vikkywulf
Код:
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
set file=%%i
Echo !file!
Pause
)
Автор: Vikkywulf
Дата сообщения: 24.11.2009 03:54
wolf0425
Большое спасибо ещё раз!
Автор: BVV63
Дата сообщения: 24.11.2009 07:05
Пытаюсь получить значение параметра "ProfilesDirectory" под ключём реестра [HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList]. Использую команду
Код: For /F %%A In ('%SystemRoot%\System32\Reg.exe Query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /V "ProfilesDirectory"') Do (...)
Автор: king_stiven
Дата сообщения: 24.11.2009 07:49
BVV63
"tokens=*"

Цитата:
Кто-нибудь может подсказать, для чего служит параметр "UseBackq"

например вывод построчно содержимого файла:

for /f "usebackq tokens=*" %%i in ("список файлов") do
Автор: mouser
Дата сообщения: 24.11.2009 08:02
есть список названий файлов ... мне их нужно все собрать в строку
сopy result.txt+1.txt+2.txt+3.txt result.txt

1.bat
for /F %%a IN (files.lst) DO call add.bat %%a

add.bat
echo +%1>>result.txt


вот загвоздка собственно в том что echo добавляет с новой строки ((

КАК добавить текст в файл в конец строки?
Автор: king_stiven
Дата сообщения: 24.11.2009 10:28

Цитата:
echo

mouser
Посмотри я давал ссылку на утилиту ech и 01MDM ВЫкладывал пример как в одну строку.
Автор: NIKZZZZ
Дата сообщения: 24.11.2009 10:45
mouser

Цитата:
есть список названий файлов ... мне их нужно все собрать в строку

А не проще ли собрать результат в переменную и потом записать ее файл?


Код: set result=copy result.txt
for /F %%a IN (files.lst) DO call :add %%a
set result=%result% result.txt
echo %result%>result.txt
goto :eof

:add
set result=%result%+%1
goto :eof
Автор: BVV63
Дата сообщения: 24.11.2009 12:33
Всем привет! Есть задача удалить из определённого места все файлы, которых нет в списке. Список невелик, его можно напрямую указать в источнике конструкции For... In... Do... Проблема в том, что при сравнении файлов с указанными в источнике (я использовал операторы "If Not ...==..." и "NEq") учитывается регистр. В реальности нужные файлы (которые удалять нельзя) могут отличаться регистром букв от тех, что будут в списке. Подскажите, пожалуйста, можно ли как нибудь проводить сравнения без учёта регистра? Или может кто иной метод для решения задачи подскажет? Заранее благодарен.
P. S. Ранее я для решения этой задачи использовал RoboCopy, но у неё проблемы с русским языком.
Автор: NIKZZZZ
Дата сообщения: 24.11.2009 12:41

Цитата:
учитывается регистр.

if /i - без учета
Автор: king_stiven
Дата сообщения: 24.11.2009 12:55
BVV63

Цитата:
Ранее я для решения этой задачи использовал RoboCopy, но у неё проблемы с русским языком.

chcp 1251 > nul
может помочь
Автор: mouser
Дата сообщения: 24.11.2009 13:31
как вот это вписать в цикл ?

Echo Sleep 3 min
sleep.exe 60
Echo Sleep 2 min
sleep.exe 60
Echo Sleep 1 min
sleep.exe 60

Автор: wolf0425
Дата сообщения: 24.11.2009 14:14
mouser
for /l %%a in (3,-1,1) do Echo Sleep %%a min & sleep.exe 60
Автор: yurkesha
Дата сообщения: 24.11.2009 14:44
mouser

Цитата:
есть список названий файлов ... мне их нужно все собрать в строку
без добавочных утилей и ухищрений:
Код: FOR /F "tokens=* delims=" %%a IN (files.lst) DO SET /p=+"%%~a"<nul>>result.txt
Автор: BlackBerry
Дата сообщения: 24.11.2009 15:48
01MDM


Цитата:
@echo off
setlocal

for %%i in ("*some string*") do call:ren "%%i"
goto:eof

:ren
set "file=%~1"

:check

if exist "%file:some string=%" (
set "file=1%file%"
goto:check
)

ren %1 "%file:some string=%"


Не понятны следующие строчки

"%file:some string=%"
"file=1%file%"

Где об этом можно почитать ?

Автор: wolf0425
Дата сообщения: 24.11.2009 16:19

Цитата:
"%file:some string=%"
"file=1%file%"
Где об этом можно почитать ?
set /?
Автор: BVV63
Дата сообщения: 25.11.2009 08:00
Вот ещё вопрос. For %%A In (*.*) Do (...) не видит файлы, имеющие аттрибуты Hidden и System. Можно это побороть, не сбрасывая аттрибуты? Я пытался предварительно составить список файлов посредством "Dir /A- /B", но тогда в список включаются и каталоги.

Добавлено:
Попробовал ForFiles, тоже отчего-то не все файлы видит. К примеру, на системном диске видит boot.ini, NTDETECT.COM и pagefile.sys, а ntldr - нет. Хотя у ntldr и у NTDETECT.COM аттрибуты одни и те же.
Автор: NIKZZZZ
Дата сообщения: 25.11.2009 08:45
BVV63

Цитата:
"Dir /A- /B", но тогда в список включаются и каталоги.

Dir /a-d исключит каталоги.
Автор: vmazur47
Дата сообщения: 25.11.2009 10:19
Не могли бы подсказать как решить такую в общем не очень сложную задачку, сам не могу с нею справится в связи с недостаточным опытом и отсутствием времени...
Есть группа файлов с одинаковым расширением, допустим ttt, которые каждый день по несколько штук падают в одну папку. Нужно написать батничек, желательно с использованием обычного рара, чтоб все файлы за один день архивировались в файлик с названием этой даты. При этом оригиналы пускай отаются. Заранее спасибо.
Автор: BVV63
Дата сообщения: 25.11.2009 10:24
vmazur47
<Путь>\Rar.Exe A <Путь>\%Date%.Rar <Путь>\*.ttt
Автор: vmazur47
Дата сообщения: 25.11.2009 11:08

Цитата:
<Путь>\Rar.Exe A <Путь>\%Date%.Rar <Путь>\*.ttt


Даная команда добавляет в архив с названием текущей даты все файлики с раширением ttt.
А нужно чтоб смотрело на дату создания файлов *.ttt и добавляло их в архив с такой же датой.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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