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

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

Автор: king_stiven
Дата сообщения: 19.08.2008 10:58
NovaC
dir /?
Автор: NIKZZZZ
Дата сообщения: 19.08.2008 11:39
NovaC

Цитата:
нужен bat файл который бы перебирал (с заданной степенью глуб



Код: @echo off
if %2==0 goto :eof
echo Folder: %~dpnx1
set /a n=%2-1
for %%i in (%1\*) do (
echo File: %%~dpnxi
)
for /d %%i in (%1\*) do (
call "%~dpnx0" "%%~dpnxi" %n%
)
goto :eof
Автор: 01MDM
Дата сообщения: 19.08.2008 14:52
pgofman2

Цитата:
Подскажите - почему не работает батник


Это системные переменные? Которые ты сначала удаляешь? Если локальные, то и батник работать не будет.



Добавлено:
NovaC
утилита disk usage (du.exe)
Автор: winhex
Дата сообщения: 19.08.2008 16:26
Есть необходимость запустить TrueCrypt на удаленной системе и смонтировать зашифрованный контейнер под буквой T, для чего изготовлен вот такой скрипт:

@echo off
rem set /p "adr=1. Enter IP-adress or name, please:"
rem set /p "pass=2. Enter Administrator's password, please:"
rem set /p "pass2=3.Enter pass for TrueCrypt, please:"
rem set /p "pathkey=4.Enter key-file path:"

start "" "d:\inst\exec\psexec.exe" \\%adr% -u domain\admin -p %pass% \\CompName\TrueCrypt\TrueCrypt.exe /l T /v %pathkey% /p %pass2%

Скрипт не пашет... Что не так? Ошибок никаких не выдает
Помогите разобраться
Автор: 01MDM
Дата сообщения: 19.08.2008 17:06
winhex
Убери все `rem`
Автор: NovaC
Дата сообщения: 20.08.2008 04:59
NIKZZZZ

Цитата:
Выводит только имена каталогов и файлов, для вывода нужной информации необходимо изменить строки

проблема в том что в синтаксических конструкциях типа %~dpnx1 не предусмотрено расширение переменной до РАЗМЕРА ПАПКИ
Автор: winhex
Дата сообщения: 20.08.2008 08:16
01MDM
блин, REM тут не причем, поставил их чтоб оттестить файл и в запарке забыл их снять в примере. Т.е. в оригинальном файле их нету и дело не в них.

Код: @echo off
set /p "adr=1. Enter IP-adress or name, please:"
set /p "pass=2. Enter Administrator's password, please:"
set /p "pass2=3.Enter pass for TrueCrypt, please:"
set /p "pathkey=4.Enter key-file path:"

start "" "d:\inst\exec\psexec.exe" \\%adr% -u domain\admin -p %pass% \\CompName\TrueCrypt\TrueCrypt.exe /l T /v %pathkey% /p %pass2%
Автор: Dis74
Дата сообщения: 20.08.2008 08:59
подскажите.
есть файл следующего вида:
[01/Feb/2008 07:50:55] ....бла бла бла мусор........[mark1] 3092/524/3616 [mark2] 8/5/13
[01/Feb/2008 07:50:55] ....другое бла бла. длина отличается....... [mark1] 1/24/616 [mark2] 1/2/3

как то можно взять цифры между [mark1] и [mark2] и сложить эти цифры.
тоесть чтобы результат получился сумма:

3092/524/3616
+1/24/616
__________________
3092+1/524+24/3616+616
(слешь тут просто разделитель. не математическое деление)

примерно представляю как это сделать но как отловить в случае со строкой переменной длинны?
Автор: vu1tur
Дата сообщения: 20.08.2008 09:17
Dis74

Код:
@echo off
SET P1=0
SET P2=0
SET P3=0
for /F "tokens=1,2,3 delims=/" %%a in ('cat %1 ^| sed -e "s/.*\[mark1\] \(.*\) \[mark2\].*/\1/"') do (
set /a P1 = p1 + %%a
set /a P2 = p2 + %%b
set /a P3 = p3 + %%c
)
echo %P1%/%P2%/%P3%
Автор: Dis74
Дата сообщения: 20.08.2008 09:23

Цитата:
for /F "tokens=1,2,3 delims=/" %%a in ('cat %1 ^| sed -e "s/.*\[mark1\] \(.*\) \[mark2\].*/\1/"') do


cat? я в винде.
type?
Автор: 01MDM
Дата сообщения: 20.08.2008 09:26
winhex
Попробуй psexec без start
Автор: vu1tur
Дата сообщения: 20.08.2008 09:27
Dis74
Да. Всё это замечательно работает в винде. Не ленитесь, в шапочку загляните, там есть ссылочка: UnxUtils - набор GNU утилит для Win32.
Автор: Dis74
Дата сообщения: 20.08.2008 09:32
vu1tur

Цитата:
You don't have permission to access /UnxUtils.zip on this server.

скинь пожалуйста на мыло dis(a)pop3(dot)ru
Автор: pgofman2
Дата сообщения: 20.08.2008 09:38
01MDM

Цитата:

Это системные переменные?
Которые ты сначала удаляешь?
Если локальные, то и батник работать не будет.


Извини - но не понял ни Вашего вопроса и ответа на мой вопрос

там же просто делается ping
причем первая проверка пинга проходит а вот вторая уже летит в космос


Код:
set servername=myserver
set router=192.168.1.1
set dns1=89.235.136.2
set dns2=89.235.136.4

PING %router% | FIND "TTL=" >NUL
IF ERRORLEVEL 1 GOTO router
goto Exit

:router
PING %dns1% | FIND "TTL=" >NUL
IF ERRORLEVEL 1 GOTO dns1
goto Exit

:nds1
PING %dns2% | FIND "TTL=" >NUL
IF ERRORLEVEL 1 GOTO reboot
goto Exit

:reboot
c:\windows\system32\shutdown.exe -r -f -m \\%servername% -t 60 -d up:125:1
goto Exit

:Exit
Автор: 01MDM
Дата сообщения: 20.08.2008 09:39
Dis74
Выбирай что тебе надо: http://gnuwin32.sourceforge.net/packages/

Только не забудь скачать `dependencies` если они есть.


Добавлено:
pgofman2

Цитата:
там же просто делается ping

Вопрос был почему удаляются переменные. Если они локальные, созданные в батнике, то их последующее использование невозможно.

Код:

set servername=
set router=
set dns1=
set dns2=


PING %router% | FIND "TTL=" >NUL
IF ERRORLEVEL 1 GOTO router
goto Exit

:router
PING %dns1% | FIND "TTL=" >NUL
IF ERRORLEVEL 1 GOTO dns1
goto Exit

:nds1
PING %dns2% | FIND "TTL=" >NUL
IF ERRORLEVEL 1 GOTO reboot
goto Exit

:reboot
c:\windows\system32\shutdown.exe -r -f -m \\%servername% -t 60 -d up:125:1
goto Exit

:Exit
Автор: vu1tur
Дата сообщения: 20.08.2008 10:00
Dis74
http://gnuwin32.sourceforge.net/packages/sed.htm
Автор: Dis74
Дата сообщения: 20.08.2008 10:01
01MDM
тут нет cat. ну cat заменим на type, sed я скачал в другмо месте.
срипт не работет. но принцип я понял. спаисбо.
Автор: 01MDM
Дата сообщения: 20.08.2008 10:07
pgofman2
Попробуй такой вариант:

Код:
@echo off
setlocal

set servername=myserver
set router=192.168.1.1
set dns1=89.235.136.2
set dns2=89.235.136.4

for %%i in (%router% %dns1% %dns2%) do (
ping -n 1 %%i 1>nul && echo Done %%i || goto:reboot
)
goto:eof

:reboot
c:\windows\system32\shutdown.exe -r -f -m \\%servername% -t 60 -d up:125:1
Автор: Dis74
Дата сообщения: 20.08.2008 11:10
vu1tur
125990313/-1296665873/-1170675560
=-О почему ушло в минус? переполнение?
Автор: vu1tur
Дата сообщения: 20.08.2008 11:59
Dis74
Ну а что тут удивительного то?
2^31=2147483648 — максимум
Автор: Dis74
Дата сообщения: 20.08.2008 13:28
ага. уже понял.
2 147 483 647
никак не обойти это ограничение? 2 гига мало..
Автор: slay1212
Дата сообщения: 20.08.2008 14:17

Цитата:
Есть необходимость запустить TrueCrypt на удаленной системе и смонтировать зашифрованный контейнер под буквой T

Попробуй нужную команду из ком строки. Я пускаю такие вещи обычно с ситсемной учетной записью - если есть права у тебя . Также я бы убрал start.
d:\inst\exec\psexec.exe \\%adr% -s \\CompName\TrueCrypt\TrueCrypt.exe /l T /v %pathkey% /p %pass2%
Еще права на каталоги проверь и Путь рathkey должен быть сетевым - из-за этого чато не работает.
Автор: vu1tur
Дата сообщения: 20.08.2008 14:27
Dis74
ну, я бы изначально писал это на перле
Ещё можно делить на 1024 и терять в точности
Автор: NIKZZZZ
Дата сообщения: 20.08.2008 15:13
NovaC

Цитата:
в синтаксических конструкциях типа %~dpnx1 не предусмотрено расширение переменной до РАЗМЕРА ПАПКИ


Код: @echo off
if %2==0 goto :eof
set /a n=%2-1
set size=0
for /r %~dpnx1 %%i in (*.*) do (
call :sum %%~zi
)
:_1
if %size%==0 goto _2
if not %size:~0,1%==0 goto _2
set size=%size:~1%
goto _1
:_2
echo Folder: %size% %~dpnx1
for %%i in (%1\*) do (
echo File: %%~zi %%~dpnxi
)
for /d %%i in (%1\*) do (
call "%~dpnx0" "%%~dpnxi" %n%
)
goto :eof
:sum
set s=0000000000000000%1
set s=%s:~-16%
set size=0000000000000000%size%
set size=%size:~-16%
set /a sr=1%s:~-8%+1%size:~-8%-200000000
set sr=0000000000000000%sr%
set sr=%sr:~-16%
set /a sl=1%s:~0,-8%+1%size:~0,-8%+1%sr:~0,-8%-300000000
set sl=0000000000000000%sl%
set sl=%sl:~-8%
set size=%sl%%sr:~-8%
goto :eof
Автор: winhex
Дата сообщения: 20.08.2008 16:17
Кто знает, можно ли организовать, чтобы ввод паролей в батник отображался в виде звездочек?
Автор: Elroir
Дата сообщения: 20.08.2008 17:10
winhex
Если поискать по инету, может и найдется решение.
Если тебе нужно просто скрыть вводимый пароль, тогда можно так:

Код:
@echo off
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>in.com
set /p password=Enter password:<nul
for /f "tokens=*" %%i in ('in.com') do set "password=%%i"
del in.com
echo.
echo The Password is:"%password%"
Автор: pgofman2
Дата сообщения: 21.08.2008 07:18
01MDM

Величайшее спасибо - ошибку осознал
Спасибо за предложенный вариант - работает отлично

последний вопрос - а как добавить в этот скрипт проверку
на наличие Сетевого Соединения как такового?
так как если соединение выключено - то скрипт не работает

Автор: DocBeen
Дата сообщения: 21.08.2008 08:35
Доброго времени суток Уважаемые,
подскажите как правельна написать батник, чтоб при перемещении на него файла - выполнялась операция с ним,

пример имеем файл test.inf - поместив на него ( на сам батник этот Файл ) выполняется упаковка его в CAB АРХИВ,
с синтаксисом создания файла я разобрался сам батник
для моего примера будет таким:
makecab test.inf

в каталоге с батником будет лежать Cab архив test.in_

так вот что надо написать в батнике, вместо имени - чтоб операция выполнялась по дрг дропс ...
Автор: Tipulatoid
Дата сообщения: 21.08.2008 08:59
Игра "Жизнь", реализованная в батнике. Just for fun.

Код: @echo off
setlocal enabledelayedexpansion
set height=8
set width=8

:read
:: Чтение cостояния вселенной

if exist tmp (
set map=tmp
) else (
set map=universe.txt
)

set y=0

for /f "tokens=*" %%a in (%map%) do (
set x=0
call :readline "%%a"
set /a y+=1
)
del /q tmp 2>nul
goto :live

:readline
:: Чтение строки

set string=%~1
if "!string:~%x%,1!" neq "" (
set /a x+=1
if "!string:~%x%,1!" equ "W" (
set cell_X%x%_Y%y%=alive
) else (
set cell_X%x%_Y%y%=
)
goto :readline
)


goto :eof

:live
:: Изменение состояния ячеек
for /l %%a in (0,1,%height%) do (
set row=
for /l %%b in (0,1,%width%) do (
set aliveneighbours=0
if not !aliveneighbours! gtr 3 call :neighbour %%b -1 %%a -1
if not !aliveneighbours! gtr 3 call :neighbour %%b +0 %%a -1
if not !aliveneighbours! gtr 3 call :neighbour %%b +1 %%a -1
if not !aliveneighbours! gtr 3 call :neighbour %%b -1 %%a +0
if not !aliveneighbours! gtr 3 call :neighbour %%b +1 %%a +0
if not !aliveneighbours! gtr 3 call :neighbour %%b -1 %%a +1
if not !aliveneighbours! gtr 3 call :neighbour %%b +0 %%a +1
if not !aliveneighbours! gtr 3 call :neighbour %%b +1 %%a +1

if !aliveneighbours! leq 1 set newcell_X%%b_Y%%a=
if !aliveneighbours! geq 4 set newcell_X%%b_Y%%a=
if !aliveneighbours! equ 2 set newcell_X%%b_Y%%a=!cell_X%%b_Y%%a!
if !aliveneighbours! equ 3 set newcell_X%%b_Y%%a=alive

if !newcell_X%%b_Y%%a! equ alive (
set row=!row!W
) else (
set row=!row!.
)
)
echo !row!>>tmp
)

cls
set /a iter+=1
type %map%
echo.
echo Шаг №%iter%
goto read

:neighbour
:: Обзор соседей
set /a neighbourx=%~1%~2
set /a neighboury=%~3%~4
if !cell_X%neighbourx%_Y%neighboury%! equ alive set /a aliveneighbours+=1
goto :eof
Автор: VitRom
Дата сообщения: 21.08.2008 11:40

Цитата:
Буду рад любым советам по оптимизации
Э... ASM? C?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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