Старый 13.09.2011, 15:14   #21
sense
 
Регистрация: 14.08.2011
Сообщений: 4
Репутация: 0
По умолчанию

Цитата:
Сообщение от SpangeBoB
PS. А чем регулярные выражения не устраивают?
Я пробовал через CMD, так:
move /-Y ???.*
Но маска ???.* перемещала все файл до 3-х символов включительно, а надо было в точности 3 символа.
Думал, что потребуется какая-то более сложная регулярка.
sense вне форума   Ответить с цитированием
Старый 13.09.2011, 18:01   #22
SpangeBoB
 
Аватар для SpangeBoB
 
Регистрация: 06.07.2010
Сообщений: 49
Репутация: 14
По умолчанию

Цитата:
Сообщение от sense Посмотреть сообщение
Я пробовал через CMD, так:
move /-Y ???.*
Но маска ???.* перемещала все файл до 3-х символов включительно, а надо было в точности 3 символа.
Думал, что потребуется какая-то более сложная регулярка.
Код:
forfiles /P C:\Windows /M ???.* /C "cmd /c move /-Y @file C:\test"
или

Код:
@echo off
set dir="C:\files"
set dest="C:\test"
cd /d %dir%
for /F %%i in ('dir /b /a-d ^| findstr "^...\."') do move /-Y %%i %dest%
pause
SpangeBoB вне форума   Ответить с цитированием
Старый 20.09.2012, 00:37   #23
dasknix
 
Аватар для dasknix
 
Регистрация: 30.07.2010
Сообщений: 20
Репутация: 0
По умолчанию DynDNS service @ .cmd & netcat

в релизы прав видимо нет. пишу суда.. (сразу скажу, для тех кто думает "что ты в том разделе вообще забыл, перец?": там это было бы не мене полезно в плане организации пастбища из дедов, которые бы сами слали в хостс свои погоняла)

перепост с forum.script-coding.com, потому написано немного более "обще", для контингента, не так искушённого в сетках

решил сегодня накатать сервак динамического обновления ip для доменов клиентских узлов (в моем случае - GSM-роутеры),
интересует вот что: поскольку биться с темой, созданной ранее, я не стал и взялся за готовую слушалку (netcat, кто не слышал - советую,
исключительно локаничное и очень удобное решение для отладки всего, что связано с сеткой и tcp-портами в частности)

время шло своим чередом, я доедал третью тарелку с гречкой и даже начал забывать к ночи про сигареты, но вопрос вселенной,
смысла жизни и всего такого не давал мне покоя всё больше и больше: как сделать нормальную синхронизацию процесса обновления
инфы от нескольких клиентов одновременно, не просто WRITE_LOCK-ами (файлами), а адекватно, через какое-нибудь shared memory..
и самое главное - как делать спаун коннект и освобождать порт для новых клиентов сразу, как только подрубился последний, тоесть
чтобы работало как полноценный сервис, типо опача, эндажайнекс и вообще всего, что имеет established в протоколе

так же надеюсь, что кому-нибудь данный кодес будет полезен. не работает в данной версии только тема с socket_count, т.к. пока в раздумьях,
стоит ли создавать пул слушалок на определённом port range, уж больно костыльно как-то, реал.. =\

любая критика принимается с радостью, как и предложения

Код:
@echo off
REM ---------------
REM -- EXECUTION --
REM ---------------

REM common.config
set      irz.ddns.fork.fastwrite_mode=yes
set           irz.ddns.nc.listen.port=44044
set         irz.ddns.nc.listen.ipaddr=127.0.0.1
set   irz.ddns.nc.listen.socket_count=3
set              irz.ddns.nc.fullpath=..\..\nc.exe
set                    irz.ddns.debug=yes
set             irz.ddns.remote_debug=yes
set              irz.ddns.debug.level=1

REM common.config.predefined
set               irz.ddns.hosts_file=%systemroot%\system32\drivers\etc\hosts

REM common.preexec_wrappers
setlocal enabledelayedexpansion
if not "%1" == "" (
    if "%1" == "--fork" (
        call :fork %0 %2
    ) else if "%1" == "--listener" (
        call :listener %2 %3
    )

    goto :EOF
)

REM 0.0 main.start
echo [main]:STARTED
echo ----------------
if "%irz.ddns.debug%" == "2" echo [main].env: nc execall = '%irz.ddns.nc.execall%'

echo [main]:preparing
if not exist ".\cache" mkdir "cache"
if not exist ".\cache" (
    echo [main][cache]:[!] error, cannot create cache directory
    goto :EOF
    ) else echo [main][cache]:directory existing

if %irz.ddns.debug% GTR 2 (
    echo [main][info]:listener will bind on %irz.ddns.nc.listen.ipaddr%:%irz.ddns.nc.listen.port%
    if "%irz.ddns.fork.fastwrite_mode%" == "yes" echo [main][info]:fastwrite mode enabled
    if "%irz.ddns.fork.fastwrite_mode%" == "no" echo [main][info]:fastwrite mode disabled
)
echo ----------------

REM 0.1 creating cycled NC fork pool
set irz.ddns.forkpid=%random%
echo [main]:fork() #1 [PID=%irz.ddns.forkpid%]
start /b %0 --fork %irz.ddns.forkpid%

echo [main]:exit
exit

REM ---------------
REM -- FUNCTIONS --
REM ---------------

REM Threads
:fork
setlocal enabledelayedexpansion
echo ----------------
echo [fork.%2]:called

set irz.ddns.fork.%2.lpid=%random%
echo [fork.%2]:creating listener [LPID=!irz.ddns.fork.%2.lpid!]
rem %1 - executable .cmd, because of %0 == ':fork'; %2 - current PID

set irz.ddns.nc.execall=%irz.ddns.nc.fullpath%
set irz.ddns.nc.execall=%irz.ddns.nc.execall% -l -s %irz.ddns.nc.listen.ipaddr%
set irz.ddns.nc.execall=%irz.ddns.nc.execall% -p %irz.ddns.nc.listen.port%
set irz.ddns.nc.execall=%irz.ddns.nc.execall% -e "%1 --listener %2 !irz.ddns.fork.%2.lpid!"

rem Calling listening utility
%irz.ddns.nc.execall%

if %irz.ddns.debug.level% GTR 0 (
    echo [fork.%2].[listener.!irz.ddns.fork.%2.lpid!] exited. respawning..
    REM if %irz.ddns.debug.level% GTR 2 echo [fork.%2].[listener.!irz.ddns.fork.%2.lpid!] exited (return code = '%errorlevel%'). respawning..
)
goto :fork

echo [fork.%1]:EXIT
exit /b

REM Executable by NC
:listener
setlocal enabledelayedexpansion
rem [th.1.0: ]
if "%irz.ddns.remote_debug%" == "yes" (
    echo [fork.%1].[listener.%2]:called
    echo [fork.%1].[listener.%2]:asking client for DDNS INFO
)

set /p irz.ddns.fork.%1.imei=IMEI:
set /p nullvar1=
if "!irz.ddns.fork.%1.imei!" == "" (
    if "%irz.ddns.remote_debug%" == "yes" (
        echo [fork.%1].[listener.%2]:no IMEI/UNIT-NAME given. client rejected.
        echo [fork.%1].[listener.%2]:EXIT
        pause
    )
    exit /b
)

set /p irz.ddns.fork.%1.ip=IP:
set /p nullvar2=
if "!irz.ddns.fork.%1.ip!" == "" (
    if "%irz.ddns.remote_debug%" == "yes" (
        echo [fork.%1].[listener.%2]:no IP-address given. client rejected.
        echo [fork.%1].[listener.%2]:EXIT
        pause
    )
    exit /b
)

REM Debug info for remote host
if "%irz.ddns.remote_debug%" == "yes" (
    if "%irz.ddns.debug.level%" == "1" echo [fork.%1].[listener.%2]:recieved DDNS-INFO
    if "%irz.ddns.debug.level%" == "2" echo [fork.%1].[listener.%2]:recieved DDNS-INFO: [IMEI=!irz.ddns.fork.%1.imei!], [IP=!irz.ddns.fork.%1.ip!]
)

REM Fastwrite try (cache evasion, directly to HOSTS)
if "%irz.ddns.fork.fastwrite_mode%" == "yes" (
    if "%irz.ddns.remote_debug%" == "yes" echo [fork.%1].[listener.%2]:evasing cache ^(fastwrite^)
    call :update_fastwrite !irz.ddns.fork.%1.imei! !irz.ddns.fork.%1.ip! %1 %2
    if "%irz.ddns.remote_debug%" == "yes" echo [fork.%1].[listener.%2]:fastwrite return code: %errorlevel%
    if "%errorlevel%" == "0" exit /b 0 else exit /b -1
    REM arg #1 - IMEI/UNIT-NAME, arg #2 - IP-address
)

REM Creating cache
set irz.ddns.fork.%1.listener.%2.cache-id=id-!irz.ddns.fork.%1.imei!.pid-%1.lpid-%2
if "%irz.ddns.remote_debug%" == "yes" (
    if "%irz.ddns.debug.level%" == "1" echo [fork.%1].[listener.%2]:creating listener private cache
    if "%irz.ddns.debug.level%" == "2" echo [fork.%1].[listener.%2]:creating listener private cache [CACHE-ID=!irz.ddns.fork.%1.listener.%2.cache-id!]
)

REM Writing vars to cache
if "%irz.ddns.remote_debug%" == "yes" (
    if "%irz.ddns.debug.level%" == "1" echo [fork.%1].[listener.%2]:writing DDNS-INFO to cache
    if "%irz.ddns.debug.level%" == "2" echo [fork.%1].[listener.%2]:writing DDNS-INFO to cache [".\cache\cache_!irz.ddns.fork.%1.listener.%2.cache-id!"]
)
echo !irz.ddns.fork.%1.ip!> ".\cache\cache_!irz.ddns.fork.%1.listener.%2.cache-id!"

if "%irz.ddns.remote_debug%" == "yes" echo [fork.%1].[listener.%2]:sleeping
call :sleep 10 %1 %2

if "%irz.ddns.remote_debug%" == "yes" echo [fork.%1].[listener.%2]:EXIT
pause
exit /b

REM Update HOSTS, using given call arguments
REM arg #1 - IMEI/UNIT-NAME, arg #2 - IP-address
:update_fastwrite
setlocal enabledelayedexpansion
if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:called
set irz.ddns.tmpvar.updated=0
set irz.ddns.tmpvar.cut_comment=0
set irz.ddns.tmpvar.first_line=1
for /f "tokens=* delims= " %%a in (%irz.ddns.hosts_file%) do (
    if "%irz.ddns.remote_debug%" == "yes" (
        if %irz.ddns.debug.level% GTR 1 echo incycle start: irz.ddns.tmpvar.updated = !irz.ddns.tmpvar.updated!
    )
    set line=%%a
    if "%irz.ddns.remote_debug%" == "yes" (
        if %irz.ddns.debug.level% GTR 1 echo     old line = !line!
    )
    for /f "tokens=1,2" %%b in ("!line!") do (
        set token1=%%b
        set token2=%%c
        if !token2! == %1 (
        rem echo host '%str-to-find%' found in string '!line!'
            set line=%2 !token2!
            set irz.ddns.tmpvar.updated=1
            if %irz.ddns.debug.level% GTR 0 echo [fork.%3].[listener.%4].fastwrite:entry for host '%1' updated
        ) else if "!token1!" == "#" (
            set irz.ddns.tmpvar.cut_comment=1
        ) else if "!token1!" == "" (
            set irz.ddns.tmpvar.cut_comment=1
        ) else (
            set irz.ddns.tmpvar.cut_comment=0
            set line=!token1! !token2!
        )
    )
    echo irz.ddns.tmpvar.cut_comment = !irz.ddns.tmpvar.cut_comment!
    if "%irz.ddns.remote_debug%" == "yes" (
        if %irz.ddns.debug.level% GTR 1 (
            if "!irz.ddns.tmpvar.cut_comment!" == "0" (
                echo updated line = !line!
                echo.
            ) else (
                echo this line will be removed, because it's a comment
                echo.
            )
        )
    )
    
    echo after word parsing cycle: irz.ddns.tmpvar.cut_comment = !irz.ddns.tmpvar.cut_comment!
    rem Storing old & updated content: no comments, no empty lines
    if not "!irz.ddns.tmpvar.cut_comment!" == "1" (
        if not "!irz.ddns.tmpvar.first_line!" == "1" (
            echo !line!>> ".\cache\updated_hosts"
        ) else (
            echo FIRSTLINE MOTHER FUCKER!!!!!!!!
            echo !line!> ".\cache\updated_hosts"
            set irz.ddns.tmpvar.first_line=0
        )
    )
    if "%irz.ddns.remote_debug%" == "yes" (
        if %irz.ddns.debug.level% GTR 1 echo incycle end: irz.ddns.tmpvar.updated = !irz.ddns.tmpvar.updated!
    )
)   
rem Creating new entry if needed
if "!irz.ddns.tmpvar.updated!"=="0" (
    if "%irz.ddns.remote_debug%" == "yes" (
        if %irz.ddns.debug.level% GTR 0 echo [fork.%3].[listener.%4].fastwrite:entry for host '%1' not found
        if %irz.ddns.debug.level% GTR 0 echo [fork.%3].[listener.%4].fastwrite:creating new entry..
    )
    echo %2 %1 >> ".\cache\updated_hosts"
)

if not exist ".\cache\WRITE_LOCK" (
    if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:writelock not set. creating..
    echo.>".\cache\WRITE_LOCK"
    if not exist ".\cache\WRITE_LOCK" (
        if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:ERROR! unable to set writelock
        if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:EXIT
        if "%irz.ddns.remote_debug%" == "yes" pause
        exit /b -1
    ) else (
        if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:writelock set
        copy %irz.ddns.hosts_file% ".\cache\backup_hosts" >nul
        if not exist ".\cache\backup_hosts" (
            if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:ERROR! unable to backup HOSTS file
            if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:EXIT
            if "%irz.ddns.remote_debug%" == "yes" pause
        )
        if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:updating system HOSTS file..
        REM move /y ".\cache\updated_hosts" %irz.ddns.hosts_file% >nul
        del /f %irz.ddns.hosts_file% >nul
        copy /y ".\cache\updated_hosts" %irz.ddns.hosts_file% >nul

        REM Validation information in updated HOSTS file
        if "%irz.ddns.remote_debug%" == "yes" (
            if %irz.ddns.debug.level% GTR 1 (
                echo pause for updated HOSTS validation tracing.
                echo now edit address for '%1' in HOSTS file to wrong value not equal '%2'
                pause
            )
        )
        rem set errorlevel=0
        echo errorlevel=%errorlevel%
        echo findstr /i /p /x /c:"%1 %2" %irz.ddns.hosts_file%
        findstr /x /c:"%1 %2" %irz.ddns.hosts_file%
        echo errorlevel=%errorlevel%
        if "%irz.ddns.remote_debug%" == "yes" (
            if %irz.ddns.debug.level% GTR 1 (
                echo validation result: errorlevel=%errorlevel%
                pause
            )
        )
        if not "%errorlevel%" == "0" (
            if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:ERROR! new HOSTS validation failed!
            if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:EXIT
            if "%irz.ddns.remote_debug%" == "yes" pause
        ) else (
            if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:new HOSTS file validation succeeded
        )
        
        REM Unset WRITE_LOCK
        if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:removing writelock..
        del /f ".\cache\WRITE_LOCK"
        if not exist ".\cache\WRITE_LOCK" (
            if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:writelock removed
            if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:EXIT
            exit /b -10
        )
        if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:ERROR! unable to remove writelock!
        if "%irz.ddns.remote_debug%" == "yes" echo [fork.%3].[listener.%4].fastwrite:EXIT
        if "%irz.ddns.remote_debug%" == "yes" pause
        exit /b -3
    )
) else exit /b -1
exit /b 0

REM Timer for WRITE_LOCK file monitoring task
:sleep
setlocal enabledelayedexpansion
echo [fork.%2].[listener.%3].sleep():called
echo [fork.%2].[listener.%3].sleep():sleeping for %1 seconds..
exit /b

REM Message indention
:nfof
echo ^%1^(^): %2
exit /b

:nfop
echo ^[%1^]: %2
exit /b

:nfo_1
REM Echo given string with indent
for /f in (%1) (
    echo        %%i
)
exit /b

:EOF
echo [main]:EXIT
зы
задействовано 80-90% буков, т.к. рц ещё, хоть и рабочее. по этой же причине спащщено куча буков чтобы время не тратить, просьба на изыбточность внимание не обращать, так реально быстрее в 10 раз

зы2
и да, речь о седьмом окне, есличо
__________________
[r@/]# rm -Rf / --no-recover

Последний раз редактировалось dasknix; 20.09.2012 в 00:45..
dasknix вне форума   Ответить с цитированием
Старый 29.10.2012, 13:52   #24
devv
 
Регистрация: 08.10.2012
Сообщений: 27
Репутация: -4
По умолчанию

Подскажите, можно ли через cmd консоль сделать папку доступной для записи?
У одной директории стоят права только чтение, надо сделать запись, если это возможно, то подскажите как.
Команда attr -r C:\temp\ не помогла

Или хотя бы команду для поиска доступных директорий на запись в определённой директории и её субдиректориях.

Последний раз редактировалось devv; 29.10.2012 в 14:24..
devv вне форума   Ответить с цитированием
Старый 29.10.2012, 15:25   #25
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

дает полный доступ группе everyone(все)
cacls C:\temp /E /C /P everyone:F
DrakonHaSh вне форума   Ответить с цитированием
Старый 18.01.2013, 23:36   #26
BRO
 
Регистрация: 15.07.2010
Сообщений: 49
Репутация: 0
По умолчанию

Как с помощью cmd найти на диске каталог с нужным названием?
Возможно такое?
Спасибо
BRO вне форума   Ответить с цитированием
Старый 19.01.2013, 00:09   #27
cat1vo
 
Аватар для cat1vo
 
Регистрация: 08.10.2010
Сообщений: 38
Репутация: 5
По умолчанию

Цитата:
Сообщение от BRO Посмотреть сообщение
Как с помощью cmd найти на диске каталог с нужным названием?
Возможно такое?
Спасибо
Код:
dir /b /s *name*
Будет искать и сразу выводить полный путь
cat1vo вне форума   Ответить с цитированием
Старый 20.01.2013, 00:48   #28
BRO
 
Регистрация: 15.07.2010
Сообщений: 49
Репутация: 0
По умолчанию

А можно ли менять через cmd дату последнего редактирования файла?
Спасибо

Последний раз редактировалось BRO; 20.01.2013 в 19:51..
BRO вне форума   Ответить с цитированием
Старый 26.01.2013, 18:30   #29
netcat
 
Регистрация: 22.12.2012
Сообщений: 25
Репутация: -1
По умолчанию

Запускаю через BAT команду для утилиты plink.exe для создания SSH туннеля, а дальше консольное окошко так и продолжает висеть, можно ли это исправить как, дописав какую команду в BAT файл чтобы при запуске консольное окно исчезало?
netcat вне форума   Ответить с цитированием
Старый 26.01.2013, 19:00   #30
cat1vo
 
Аватар для cat1vo
 
Регистрация: 08.10.2010
Сообщений: 38
Репутация: 5
По умолчанию

Цитата:
Сообщение от netcat Посмотреть сообщение
Запускаю через BAT команду для утилиты plink.exe для создания SSH туннеля, а дальше консольное окошко так и продолжает висеть, можно ли это исправить как, дописав какую команду в BAT файл чтобы при запуске консольное окно исчезало?
Код:
start "plink" /B plink.exe param1
cat1vo вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot