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

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

Автор: An4eus
Дата сообщения: 20.04.2009 10:50
01MDM
а если нужно анализировать ключ - например передаём -i - выполняется одно действие, другой ключ - другое действие
Автор: greenfox
Дата сообщения: 20.04.2009 12:01
у robocopy есть параметр который позволяет не выводить что именно делает команда? (в стандартном режиме весь список фалов\директорий копируемых\перемещ-х выводит на экран)
Автор: smirnvlad
Дата сообщения: 20.04.2009 12:14
An4eus

в простом случае так

Код:
@echo off
if "%~1"=="" goto :usage
if "%~1"=="-i" goto :info
if "%~1"=="-help" goto :help

goto :eof

:info
echo Info
goto :eof

:help
echo Help
goto :eof

:usage
echo How to
echo %0 -i - show Info
echo %0 -help - show Help
Автор: Nagual
Дата сообщения: 20.04.2009 12:20
greenfox
>nul не подойдет разве?
Автор: mouser
Дата сообщения: 20.04.2009 13:26
Добрый ....
подскажите как сделать условие:

если в папке равно или более 3-х файлов по маске filesREM*, тогда ВЫПОЛНИТЬ echo wait иначе ВЫЙТИ
Автор: Elroir
Дата сообщения: 20.04.2009 14:32
mouser

Код:
@echo off
setlocal enabledelayedexpansion
set "count=0"
for %%a in (filesREM*) do (
set /a "count+=1"
if "!count!"=="3" (echo Wait... & goto :EOF)
)
Автор: ZeroCrash
Дата сообщения: 20.04.2009 22:07
01MDM
Спасибо!
Всё ок.

Теперь у меня к тебе есть ещё один вопрос, есл можно)

Можно ли сделать вот такое:

Нужно чтобы при запуске батника открывалась нужная прога, в этой проге есть поле для ввода текста и там уже содержится определённый текст. Так вот можно ли сделать так чтобы батник находил поле, в которое введён этот текст и заменял этот текст на случайную строчку из списка в текстовом файле?

Знаю что прошу многое (да и думаю задача не совсем для батника), но тем не иенее с нетерпением жду ответа.
Если так сделать в батнике нельзя, то подскажи пожалуйста где и как)

Заранее ОЧЕНЬ благодарен!
Автор: mouser
Дата сообщения: 21.04.2009 08:56
Elroir
СПАСИБО ... но там нужен GEQ

@echo off
setlocal enabledelayedexpansion
set "count=0"
for %%a in (filesREM*) do (
set /a "count+=1"
if "!count!" GEQ "3" (echo Wait... & goto :EOF)
)
Автор: 01MDM
Дата сообщения: 21.04.2009 10:56
ZeroCrash
К сожалению командные файлы не могут сделать такое. Ищи на форуме AutoIT, мне кажется он тебе поможет
Автор: greenfox
Дата сообщения: 21.04.2009 10:59
smirnvlad
Nagual
сенькую!
Автор: Elroir
Дата сообщения: 21.04.2009 12:03
mouser

Цитата:
но там нужен GEQ

А смысл?
Если for дошел до трех, то, в любом случае, условие "больше или равно трем" выполняется.
А если учесть, что при достижении трех, происходит выход из цикла, то условие "больше трех" вообще недостижимо.
Автор: ZeroCrash
Дата сообщения: 21.04.2009 14:53
01MDM

Спасибо!

Тогда у меня другой вопрос:
Как придать придать случайное значение определённому параметру реестра случайным значением из списка в текстовом файле?
Такое можно?
Автор: 01MDM
Дата сообщения: 21.04.2009 15:28
ZeroCrash

Цитата:
Такое можно?

При условии что в файле values.txt записаны по одному варианту значений на каждую строчку. Например:

Код:
1dfghy
123 ff rr
222 dfrggb
svfrTR 659
sss gtre 4563
cdvvbg IUnvgf8 88
qweerrvvv
334 y67gfde4
и т.д и т.п
Автор: ZeroCrash
Дата сообщения: 21.04.2009 15:38
01MDM

Спасибо!

Буду пробовать)

Добавлено:
А как сделать чтобы такое же значение, которое добавляется в параметр реестра, добавлялось ещё в один или несколько параметров в разных ветвях реестра? (имена параметров одинаковые)

И ещё, как сделать чтобы згачение присваивалось случайно по такой маске:

xxxxx-QWE-xxxxxxx-xxxxx

x - это случайные цифры
QWE - чтобы всегда были эти 3 буквы без изменения

Заранее ОЧЕНЬ сильно благодарен))))
Автор: 01MDM
Дата сообщения: 21.04.2009 16:33
ZeroCrash

Код:
@echo off
setlocal enabledelayedexpansion

:: Генерируем ключ

for %%i in (1,2,3) do (
for /f %%j in ("!random!!random!!random!") do set "value_%%i=%%j"
)

for /f "tokens=2 delims=_=" %%i in ('set value_') do (
if %%i==1 set "value_1=%value_1:~-5%-QWE"
if %%i==2 set "value_2=%value_2:~-7%"
if %%i==3 set "value_3=%value_3:~-5%"
)

set "key=%value_1%-%value_2%-%value_3%"

:: Записываем значения в реестр

:: Здесь ветки, в которые будем записывать ключ

set "regpath_1=hkcu\environment\qwerty"
set "regpath_2=hklm\software\asdfgh"
set "regpath_3=hkcr\.test\zxcvbn"

:: "Your Param" - название параметра
for /f "tokens=2 delims==" %%i in ('set regpath_') do (
reg add "%%i" /v "Your Param" /t reg_sz /d %key% /f
)
Автор: ZeroCrash
Дата сообщения: 21.04.2009 16:36
Ещё раз спасибо!

Добавлено:
А вот такой батник будет правельным:


Код: @echo off
setlocal

set "regpath_1=HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters
set "regpath_2=HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

for /f "tokens=*" %%i in (host.txt) do call:set "%%i"
for /f "tokens=3* delims=_=" %%i in ('set value_') do set "randomValue=%%i %%j"

for /f "tokens=2 delims==" %%i in ('set regpath_') do (
reg add "%regpath%" /v "Hostname" /t reg_sz /d "%randomValue%" /f
)

goto:eof

:set
set "value_%random%=%~1"
Автор: 01MDM
Дата сообщения: 21.04.2009 17:08
ZeroCrash
Исправь слегка:

Код:
@echo off
setlocal

set "regpath_1=HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters
set "regpath_2=HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

for /f "tokens=*" %%i in (host.txt) do call:set "%%i"
for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue=%%i"

for /f "tokens=2 delims==" %%i in ('set regpath_') do (
reg add "%%i" /v "Hostname" /t reg_sz /d "%randomValue%" /f
)

goto:eof

:set
set "value_%random%=%~1"
Автор: ZeroCrash
Дата сообщения: 21.04.2009 17:11
Ок. спс
Автор: LiLysh
Дата сообщения: 21.04.2009 18:38
день добрый, прошу помочь вот с такой задачей:
есть к примеру на диске С папка а1 и а2, надо сравникть какие файлы есть в обеех папках и все файли которые не найдены в а2, скопировать с папки а1 в папку а3
Автор: Elroir
Дата сообщения: 21.04.2009 18:52
LiLysh
Что-то вроде такого:

Код:
@echo off
dir /b /a-d c:\a1>list1.tmp 2>nul
dir /b /a-d c:\a2>list2.tmp 2>nul
type list1.tmp | findstr /V /G:list2.tmp>list3.tmp
for /f "tokens=*" %%a in (list3.tmp) do copy "c:\a1\%%a" c:\a3\>nul
del /q list*.tmp
Автор: Bad_BoY
Дата сообщения: 21.04.2009 19:50
Есть вот такой bat'ик.

Код:
net use g: \\servername_1\t
Автор: wolf0425
Дата сообщения: 21.04.2009 20:54
LiLysh , без временных файлов задача решается так:

Код: For %%a In (c:\a1\*.*) Do if not exist "c:\a2\%%~nxa" copy /b "%%~fa" c:\a3\
Автор: ju ja
Дата сообщения: 21.04.2009 20:57
помогите пожалуйста с синтаксисом
в ком строке вычисляет значения, а в батнике не хочет :'(
for /r "L:\" %%a in (*.*) do (
for /f "tokens=1,2,3,4,5 delims=,. " %%c in ("%%~ta") do (
set f_time=%%f%%g
if "%f_time:~0,1%"=="0"(
set t4=%f_time:~1,1%
) else (
set t4=%f_time:~0,2%)

if "%f_time:~3,1%"=="0"(
set t5=%f_time:~4,1%
) else (
set t5=%f_time:~0,2%)

set /a t6=%%t4%%*60+%%t5%%

if "%time:~0,1%"=="0"(
set t1=%~time:1,1%
) else (
set t1=%time:~0,2%)

if "%time:~3,1%"=="0"(
set t2=%time:~4,1%
) else (
set t2=%time:~3,2%)

set /a t3=%%t1%%*60+%%t2%%-15
if %%t6%% LSS %%t3%% del "%%a"
)
)
Автор: wolf0425
Дата сообщения: 21.04.2009 21:03
ju ja совет:
пересчитывай f_time как 4 раздельных цифры с домножением на коэффициенты 600 60 10 1, а не как два числа с коэффициентами 60 1, сразу станет меньше заморочек с вычислением

а основная ошибка собственно в том, что например
set f_time=%%f%%g
if "%f_time:~0,1%"=="0"
писать внутри for нельзя, надо писать или через !f_time:~0,1! или с выносом в подпрограмму


Код: @echo off
setlocal enabledelayedexpansion

for /r "L:\" %%a in (*.*) do for /f "tokens=1,2,3,4,5 delims=,. " %%c in ("%%~ta") do (
set f_time=%%f
set /a t6= !f_time:~0,1! * 600 + !f_time:~1,1! * 60 + !f_time:~3,1! * 10 + !f_time:~4,1!
set /a t3= %time:~0,1% * 600 + %time:~1,1% * 60 + %time:~3,1% * 10 + %time:~4,1%
if %t6% LSS %t3% echo del %%a
)
Автор: batniki
Дата сообщения: 21.04.2009 22:27
Приведите, пожалуйста, рабочий пример цикла с выборкой по значению из ini файла, результатом выборки должна быть переменная
Автор: ruslanxxx
Дата сообщения: 22.04.2009 04:41
kak мне зделать screenshot (десктопа) из cmd,или подскажите чем могу зделать ?!
Автор: ju ja
Дата сообщения: 22.04.2009 05:04
wolf0425
спасибо, я попробую отладить
он удаляет файлы позже определенного времени
Автор: ATS2000
Дата сообщения: 22.04.2009 05:28
ruslanxxx

Можно программками Xnview и nircmd (полезные утилиты в шапке) сделать

Пример xnview:

xnview.exe -capture=window,d:\screenshot_$.jpg
xnview.exe -capture=desktop,d:\screenshot_###.jpg

Автор: Mozgius
Дата сообщения: 22.04.2009 10:15
Доброго всем дня!

есть бат вида:

"c:\Program files\1cv81\bin\1cv8.exe" CONFIG /Sserver\Base /Nлогин /Pпароль /DumpIB "E:\1C_DB\AutoBackup\ZBE81\ZBE81.dt"

for /F "delims=. tokens=1-3" %%a in ('echo %date%') do rename ZBE81.dt "ZBE81%%c%%b%%a.dt"

нужно в середину вставить проверку вида:

если системная дата = 01 числа любого месяца любого года, то копировать файл с переименованием в другое место
Автор: ipmanyak
Дата сообщения: 22.04.2009 13:41
Mozgius
if %date:~0,-8% == 01 ...
Имей ввиду, зависит от формата даты, в данном случае формат даты был ДД.ММ.ГГГГ
Тоже самое:
if %date:~0,2% == 01 ...

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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