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

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

Автор: ponand
Дата сообщения: 04.03.2009 18:21
Подскажите плиз...
Как экранировать символ "%" для записи переменной в виде строки в файл?
Автор: BorlandIMHO
Дата сообщения: 04.03.2009 19:29
ponand
Двойные % вместо одинарных:
Код: set ASS=ЖОПА
echo %%ASS%%=%ASS% >>outputfile.txt
pause
Автор: graydevil
Дата сообщения: 04.03.2009 20:15
Господа, а как переименовать текущего залогиненого юзера, хочу получить такой cmd -

1. переименовываем текущего в "myuser"
2. net user "myuser" "pass" /add /passwordchg:no /passwordreq:yes





Автор: avkorets
Дата сообщения: 04.03.2009 23:50
ребят никто не подскажет насчет awk?
есть строка $0
есть поля в ней $i
каждое поле нужно проверить на совпаение символа...
например поле имеет вид х="3546253012"
нужно типа
if ($i~\х="\)
{
rf=$i
}
то есть если поле имеет совпадение которое я озвучил в условии иф то rf присваевается
то что в кавычках 3546253012..
есть у кого какие соображение или подскажите куда обратиться...Тут в свое время помогли мне с sed мож и с awk помогут...
Автор: igor_andreev
Дата сообщения: 05.03.2009 01:07
avkorets

Цитата:
есть у кого какие соображение

Ну if .. else через отдельный скрипт реализовать.
Типа вот, если четвертое поле начинается с x=" то присвоить переменной rf десять знаков, начиная с 4-го из четвертого поля:

Код:
echo aa bb cc x="3546253012" | gawk -f script.awk
Автор: avkorets
Дата сообщения: 05.03.2009 07:50
igor_andreev
Спсибо, правда не помогает почему то..
он rf нуль присваивает..
могу кусок кода написать моего для понятия общей картины...


Цитата:

if($1=="<ED211") -ищу строку
{
for(i=1;i<=NF;i++) шуршу по полям
{
if ($i~/^ReservedSum="/) ищу совпадение
{
reservedsum = substr($i,4,10) если совпало..
}
}

Так не пашет =( нолик присваевает..
К тому же колво символов которое стоит после " может быть и не 10..
Так, что нужно чтото типа поиска на совпадение и если совпало то вытащить значение находящееся между ""..Вот как так сделать ну не могу понять с этими регулярными выражениями =)
Хммм...
Если выполнить

Цитата:

gsub(/^\ReservedSum=*"|" *$/,"",$i)

то возращает то что нужно!!Но опять таки
если попробовать присвоить

Цитата:

reservedsum = gsub(/^\ReservedSum=*"|" *$/,"",$i)

получае на выходе reservedsum=0..блин чего я не так делаю?
Автор: graydevil
Дата сообщения: 05.03.2009 09:23
Помогите решить проблему, есть команда

control userpaswords2

где выбираем юзера для автологина, вводим пароль...

Можно реализовать все эти опрации из коммандной строки,
вот юзер, вот пароль, ему сделать автовход.
Автор: El Sanchez
Дата сообщения: 05.03.2009 10:41

Цитата:
Помогите решить проблему, есть команда

control userpaswords2

где выбираем юзера для автологина, вводим пароль...

Можно реализовать все эти опрации из коммандной строки,
вот юзер, вот пароль, ему сделать автовход.


Можно попробовать утилиту autologon http://technet.microsoft.com/ru-ru/sysinternals/bb963905.aspx
Автор: de_SAM
Дата сообщения: 05.03.2009 10:48
Хочу немного автоматизировать процесс..
нужно каждый день выкладывать на фтп файл 3х дневной давности...
вид названия файла: 20090305work.db4
т.е. сегодня допустим 5 марта - мне нужно выложить (-3 дня) 20090302work.db4
подсобите c датами.. плиз =)
Автор: Maza_Faka
Дата сообщения: 05.03.2009 11:06
graydevil
Можно изменив определённые параметры реестра. Info
Автор: avkorets
Дата сообщения: 05.03.2009 11:25
если кому интересно решил задачу.

Цитата:

for(i=1;i<=NF;i++)
{
if ($i~/x=/)
{
gsub(/^\x=*"|" *$/,"",$i)
out=$i
}
}

Автор: wergel
Дата сообщения: 05.03.2009 14:37
А такая задача:
Нужен bat-ник который бы соединялся по сетевому пути к логу(который постоянно пишется) и с момента запуска данного bat-ника считывал все что пишется в этот момент в лог в отдельный файл определенный пользователем(например fragment.log). И этот файл(fragment.log) в который записывается результат должен храниться на локальной машине. Остановка работы bat-ника завершает запись в файл fragment.log

смысл всего идентичен команде tail -f на Unix:
Выделить всёБез подсветки
1:

[logur2l@l6 log]$ tail -f server.log >fragment.log

Которая завершается по нажатию CTRL+C


А то народ говорит что это не реально сделать, мой мозг не додумается сам, нужна помощь, да и я сомневаюсь что есть невыполнимые задачи
Автор: 01MDM
Дата сообщения: 05.03.2009 14:55
wergel
Ну а кто запрещает использовать tail под win32?

http://tailforwin32.sourceforge.net/
Автор: wergel
Дата сообщения: 05.03.2009 15:38
В том то и дело что нужно обойтись без привлечения сторонних программ!!! (иначе бы не заморачивались) - а это обязательное условие
Автор: 01MDM
Дата сообщения: 05.03.2009 18:51
wergel

Цитата:
обойтись без привлечения сторонних программ!!!


Попробуй - каждые 3 сек смотрит лог на изменение размера файла, и если размер другой, записывает новые строчки в другой лог

Код:
@echo off
setlocal

set sourcelog="U:\Share\test.log"
set destlog="C:\Logs\fragment.log"

set skip=0
set size=0

:start
for %%i in (%sourcelog%) do (
    if %%~zi neq %size% (
        set size=%%~zi
        call:tail
    )
)
ping -n 4 127.0.0.1 1>nul
goto:start

:tail
more +%skip% %sourcelog% 1>>%destlog%
for /f %%i in ('more +%skip% %sourcelog%') do set /a skip+=1
Автор: maxi812
Дата сообщения: 05.03.2009 19:20
Нужен батничек для обновления сайта через ФТП.
Автор: graydevil
Дата сообщения: 06.03.2009 06:39
А можно ли получить название исполняемого батника в переменную?

Хочеться такое -

имеем батник:

user_pass_ip.cmd

Вот эти user pass ip и есть переменные, а положим "_" разделитель их.


Автор: igor_andreev
Дата сообщения: 06.03.2009 06:45
graydevil

Код:
for /f "tokens=1,2,3 delims=_" %%a in ('echo %~n0') do set user=%%a&set pass=%%b&set ip=%%c
Автор: graydevil
Дата сообщения: 06.03.2009 08:33
А можно ли с батника vbs скрипт пускать?

типа идет батник
.
.
.
кусок vbs скрипта


Или надо код в батнике копировать в vbs файл ( как это сделать?) и вызывать его потом? И будут ли ему тогда переменные передаваться или как их передать...
Автор: K_AHTOH
Дата сообщения: 06.03.2009 09:04
Добрый день уважаемые.
Столкнулся с проблемой "русские символы" в путях.
Недавно здесь же обсуждал запуск внешней программы для обработки файлов, с использованием NET USE.
Так вот сама проблема: к примеру: NET USE M:\\192.168.100.1\Мои файлы\
Эта строка прекрасно отрабатывает из Пуск-Выполнить, а вот в командном файле появляются кроказябры и соответственно не подключается путь (кодировка win)
Автор: graydevil
Дата сообщения: 06.03.2009 09:06
K_AHTOH

так вроде...

chcp 1251

NET USE "M:\\192.168.100.1\Мои файлы\"
Автор: Romeo_sh
Дата сообщения: 06.03.2009 09:23
graydevil

Делается так:

wscript.exe \\server\NETLOGON\script.vbs
Автор: TechnicsKuzya
Дата сообщения: 06.03.2009 09:38
Мое решение задачи для архивирования папки UnPack из папки Pack, с добавлением в имя архива даты последнего измененного файла в папке UnPack в заданном (определенном Вами в скрипте) формате представления даты, а также решение проблемы локализованного вывода информационных сообщений в зависимости от региональных настроек операционной системы... [more=тут варианты...]

Вариант 1:


Код:
@echo off
set sys_date_format=dd.MM.yyyy
set my_date_format=dd_MM_yyyy

for /F "tokens=*" %%s in (.\Config\Config.txt) do set %%s

Title Technics Pack creating...

for /f "tokens=3*" %%v in ('reg query "%detect_DF%" /v sShortDate^|findstr /I /C:"sShortDate"') do ((echo %%v>>Config\my_date_format.txt)1>nul 2>&1)&(set sys_date_format=%%v)
attrib +r Config\my_date_format.txt>nul

for /f "tokens=3" %%c in ('reg query "%detect_CP%" /v OEMCP^|findstr /I /C:"OEMCP"') do if not "%%c"=="866" goto eng

echo.
echo Скрипт выполняет создание SFX-архива из содержимого папки "..\Unpack"
echo.
echo Пожалуйста, дождитесь сообщения об окончании выполнения скрипта!!
echo.
echo.

if %sys_date_format%=="" (cls)&(echo.)&(echo Невозможно определить текущий формат представления даты, свяжитесь с автором!)&(echo.)&(pause)&(exit)

(echo.)&(echo Текущий формат представления даты "%sys_date_format%")&(echo.)&(echo Заданный формат представления даты "%my_date_format%")&(echo.)

if exist Post%SP%_Technics_Pack_%Lang%_%OS%*.exe del Post%SP%_Technics_Pack_%Lang%_%OS%*.exe
Tools\rar.exe -tl a -ep1 -r -m0 -s -sfx -zTools\Comment.txt Post%SP%_Technics_Pack_%Lang%_%OS%.exe ..\UnPack\* >nul

REG ADD "%detect_DF%" /v sShortDate /t REG_SZ /d "%my_date_format%" /f >nul
for /f "tokens=1" %%d in ('dir Post%SP%_Technics_Pack_%Lang%_%OS%.exe /T:W^|findstr /I /C:"Post%SP%"') do ren Post%SP%_Technics_Pack_%Lang%_%OS%.exe Post%SP%_Technics_Pack_%Lang%_%OS%_(%%d).exe
REG ADD "%detect_DF%" /v sShortDate /t REG_SZ /d "%sys_date_format%" /f >nul

for /f "tokens=3*" %%w in ('reg query "%detect_DF%" /v sShortDate^|findstr /I /C:"sShortDate"') do set chk_date_format=%%w

(echo Восстановленный формат представления даты "%chk_date_format%")&(echo.)
if not "%sys_date_format%"=="%chk_date_format%" (echo.)&(echo Внимание! Формат представления даты восстановлен некорректно, свяжитесь с автором!!)&(echo.)&(color 0c)&(pause)&(exit) else (
    (echo.)&(echo Формат представления даты восстановлен корректно!!)&(echo.)&(echo Работа скрипта окончена, для закрытия данного окна нажмите любую клавишу...)&(color 0a))

pause>nul
exit

:eng

echo.
echo The script carries out creation of SFX-archive from contents of folder ..\Unpack
echo.
echo Please, wait message when the script will finish the work!!
echo.
echo.

if %sys_date_format%=="" (cls)&(echo.)&(echo It is impossible to define a current presentation format of date, contact the author!)&(echo.)&(pause)&(exit)

(echo.)&(echo The current presentation format of date "%sys_date_format%")&(echo.)&(echo The set presentation format of date "%my_date_format%")&(echo.)

if exist Post%SP%_Technics_Pack_%Lang%_%OS%*.exe del Post%SP%_Technics_Pack_%Lang%_%OS%*.exe
Tools\rar.exe -tl a -ep1 -r -m0 -s -sfx -zTools\Comment.txt Post%SP%_Technics_Pack_%Lang%_%OS%.exe ..\UnPack\* >nul

REG ADD "%detect_DF%" /v sShortDate /t REG_SZ /d "%my_date_format%" /f >nul
for /f "tokens=1" %%d in ('dir Post%SP%_Technics_Pack_%Lang%_%OS%.exe /T:W^|findstr /I /C:"Post%SP%"') do ren Post%SP%_Technics_Pack_%Lang%_%OS%.exe Post%SP%_Technics_Pack_%Lang%_%OS%_(%%d).exe
REG ADD "%detect_DF%" /v sShortDate /t REG_SZ /d "%sys_date_format%" /f >nul

for /f "tokens=3*" %%w in ('reg query "%detect_DF%" /v sShortDate^|findstr /I /C:"sShortDate"') do set chk_date_format=%%w

(echo The restored presentation format of date "%chk_date_format%")&(echo.)
if not "%sys_date_format%"=="%chk_date_format%" (echo.)&(echo Attention! The presentation format of date is restored incorrectly, contact the author!!)&(echo.)&(color 0c)&(pause)&(exit) else (
    (echo.)&(echo The presentation format of date is restored correctly!!)&(echo.)&(echo The script has completed operation, for closing press any key...)&(color 0a))

pause>nul
exit
Автор: mike345S
Дата сообщения: 06.03.2009 10:28
K_AHTOH
А если cmd файл сохранить в кодировке 866?
Автор: K_AHTOH
Дата сообщения: 06.03.2009 10:48
mike345S
Да... вроде так работает... К сожалению пока проверить не могу ресур отвалился. Но в cmd окне уже вроде не краказябрами пишет. Так что должно работать. Спасибо!
Автор: king_stiven
Дата сообщения: 06.03.2009 14:17
de_SAM
В шапке

Цитата:
Работа с текстом, датой, и файлами

Автор: braconier
Дата сообщения: 06.03.2009 16:39
есть батник который копирует папку xcopy /E /Y /EXCLUDE:exclude.txt F:\Rab1 Z:\db_copy\forrar\Rab но у каждого в папке есть папка mail_имя пользователя и в файле exclude.txt указаны эти папки, так как нет необходимости в создания ежедневного бэкапа для этих папок. но раз в неделю хочу сделать копии именно этих папок, как можно это организовать? /includ-а нету в xcopy а жаль...
Автор: LiLysh
Дата сообщения: 06.03.2009 19:33
День добрий, можно чисто нубский вопрос, я в батниках не силен, но есть задача при запуске винды чтоб включалась служба, к примеру "messenger", я понимаю что можно зделать батник в котором будет прописано "net start messenger" и закинуть его в автозагрузку, но вопрос - можно ли зделать батник корорый поменяет настройки службы с "вручную" (или "отключено") на "авто" (загрузка с виндовс), чтоб его раз запустить и больше не иметь проблем с етим...надеюся вы поняли суть вопроса...заранее благодарен за помощь...
Автор: Kilyan
Дата сообщения: 06.03.2009 19:42
Подскажите!
Существует ли в природе sed.exe, работающий без левых dll?
Не очень удобно постоянно таскать (libiconv2.dll и libintl3.dll)
Автор: lorents
Дата сообщения: 06.03.2009 20:02
может кто знает как через бантик отправить на печать фотографии через функцию мастер печати фотографий? или через какую нибудь другую функцию?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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