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

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

Автор: user5nov
Дата сообщения: 05.05.2010 08:45
Спасибо ВСЕМ БОЛЬШОЕ, всё получилось.
Автор: wolf0425
Дата сообщения: 05.05.2010 09:33
korosya у тебя нечетное количество " в строке, это так и задумано - такой кривой второй парамтр батника?

Автор: Foxide
Дата сообщения: 05.05.2010 09:39
Добрый день, прошу помочь с решением задачи.
Условия задачи.
[more]Создать командный файл который в зависимости от введенного ключа будет выполнять следующие действия:
ключ /a - на дискете создаются подкаталоги, имена которых задаются в качестве фактический параметров. Затем из указанной в качестве параметра папки копируются файлы имеющие расширения совпадащие с именами подкаталогов в соответствующие подкаталоги, а все остальные в корневой каталог.

ключ /b - освобождается пространство на дискете. Для чего удаляются файлы имеющие расширения .exe . bak .tmp с именами вводимыми в качестве фактических параметров.

ключ /c - выполняется "перепаковка" дискеты. Для чего содержимое переписывается в папку, затем выполняется форматирование дискеты, при этом в зависимости от желания пользователя создаётся системный или рабочий диск. После чего происходит перемещение файлов из временной папки обратно.

Если не введён ни один из ключей или введён неверный ключ, то пользователю предлагают получить справку по нажатию на клавишу F1, либо завершить программу.

5 bat файлов (1 основной + 3 на ключи +1 справка), с использованием команд shift, for, call.[/more]

Вот что родил я.
[more]
***main***
if not "%1"=="/a" goto b
call c:\fox\4a.bat %1 %2 ---???
:b
if not "%1"=="/b" goto c
:begb
shift
call c:\fox\4b.bat %1 %2
if "%1"=="" goto :end
goto begb
:c
if not "%1"=="/c" goto help
call c:\fox\4c.bat
goto :end
:help
echo You have entered an incorrect key (or have not entered any). Press F1 to read help.
choice /c:fn F1 or No ---???
if errorlevel 2 goto end
if errorlevel 1 goto F1
:F1
call c:\fox\Help.bat
:end
***---***

***/a*** ---???
@echo off
:beg
shift /2
if "%1"=="" goto end
md a:\%2
copy %1\*.%2 a:\%2
goto beg
copy %1\*.* a:\
:end
***---***

***/b***
@echo off
del a:\%1.exe
del a:\%1.bak
del a:\%1.tmp
***---***

***/c***
rem @echo off
md c:\ptemp
move a:\*.* c:\ptemp\
echo Create System Disc?
choice /c:yn Yes or No /t:n,30
if errorlevel 2 goto No
if errorlevel 1 goto Yes
:No
format a: /q
goto move
:Yes
format a: /s /q
:move
move c:\ptemp\*.* a:\
deltree c:\ptemp /y
***---***

***help***
echo ***HELP***
echo key /a - ...
echo key /b - ...
echo key /c - ...
pause
***---***
[/more]

Прошу помочь с ключом /a, и самое главное: как в choice вариант ответа "повесить" на клавишу F1?

Заранее благодарю.
Автор: user5nov
Дата сообщения: 05.05.2010 10:02
Подскажите плиз ещё, что поменять или добавить чтобы воводился результат файла files.txt без пробелов?

chcp 1251
for /f "tokens=3*" %%a in ('dir c:\') do set "msg=%%b"
for /f "tokens=3" %%s in ('dir /s/a-d "c:\5\*" ^| findstr /r /b /c:"[ ]" ^| find /v "%msg%" ') do set sizetxt=%%s
1>"files.txt" echo %sizetxt: =%
Автор: NIKZZZZ
Дата сообщения: 05.05.2010 10:09


Добавлено:
user5nov

Цитата:
что поменять или добавить чтобы воводился результат без пробелов?

1>"files.txt" echo %sizetxt: =% в этой строке пробел перед "=" нужно заменить на символ с кодом 0xA0 , некоторые редакторы позволяют это сделать.

Автор: wolf0425
Дата сообщения: 05.05.2010 11:35
user5nov, я же тебе на предыдущей странице написал, что код на предпредыдущей подправлен на этот счет


Код: for /f "tokens=3*" %%a in ('dir "%~f0"') do set "dir_txt=%%b"
for /f "tokens=3" %%s in ('dir /s/a-d .\* ^| findstr /b /c:" " ^| find /v "%dir_txt%" ') do set "dir_txt=%%s"
for /f "delims=0123456789" %%a in ("%dir_txt%") do call set "dir_txt=%%dir_txt:%%a=%%"
1>file.txt echo %dir_txt%
Автор: mouser
Дата сообщения: 05.05.2010 12:43
как эмулировать движение мыши в определенную область и нажать клавишу
Автор: king_stiven
Дата сообщения: 05.05.2010 12:53
mouser
nircmd в шапке, утилита
Автор: mouser
Дата сообщения: 05.05.2010 13:14
послать мышу по координатам можно, а как перед этим разблокировать комп. ???
Автор: Mark_Titov
Дата сообщения: 05.05.2010 13:56
wolf0425 нужна твоя помощь, пож-ста прочитай личку...
С уважением...
Автор: king_stiven
Дата сообщения: 05.05.2010 14:02
mouser

Цитата:
а как перед этим разблокировать комп. ???

?

Добавлено:
Foxide
goto это зло,
Попробуй так:
if "%1"=="/a" (
команда
команда
...
)
if "%1"=="/b" (
команда
команда
...
)
Автор: mouser
Дата сообщения: 05.05.2010 14:43
king_stiven
комп. заблокирован ... нужно чтоб сам разблокировался ... далее отправлю команды эмуляции а затем заблокировать
Автор: Joo1z
Дата сообщения: 05.05.2010 14:56
Кто-нть может поделиться утилитками HS Tools вроде назывались. В сети уже нигде не найти.
Автор: duh_S
Дата сообщения: 05.05.2010 15:09
подскажите, плиз, какими командами можно оперировать (добавлять\изменять) с системными переменными
Автор: soft111
Дата сообщения: 05.05.2010 15:24
Добрый день, подскажите пожалуйста как с помощью bat файла можно удалить последние 45 строк из текстового файла, количество строк разное в каждом файле. Заранее спасибо.
Автор: wolf0425
Дата сообщения: 05.05.2010 16:01

Цитата:
Добрый день, подскажите пожалуйста как с помощью bat файла можно удалить последние 45 строк из текстового файла
мне в свое время подсказали как удалить 3 последние строки

Код: sed -n -e :a -e "1,3!{P;N;D;};N;ba" 1.txt > 2.txt
Автор: king_stiven
Дата сообщения: 05.05.2010 16:06
soft111
sed -n -e :a -e "1,45!{P;N;D;};N;ba" 1.txt > 5.txt

mouser

Цитата:
комп. заблокирован

не сталкивался
Автор: Mark_Titov
Дата сообщения: 05.05.2010 17:11
wolf0425 Ответил в личку...
Автор: soft111
Дата сообщения: 05.05.2010 19:21
king_stiven, wolf0425 Спасибо


Цитата:
sed -n -e :a -e "1,45!{P;N;D;};N;ba" 1.txt > 5.txt


А как сделать так чтобы файл 1.txt перезаписывался?
Автор: korosya
Дата сообщения: 05.05.2010 19:54
wolf0425

Цитата:
korosya у тебя нечетное количество " в строке, это так и задумано - такой кривой второй парамтр батника?


Да это такой кривой параметр, именно 3 штуки двойных кавычек. Но это обходится заданием в for параметра usebackq и в качестве символьной строки ('%*"')

В принципе я догадался как сделать :
[more]
for /F "UseBackQ tokens=1-20 delims=\." %%a in ('%*"') do (
if %%c==INF set nameinf=%%b
if %%c==inf set nameinf=%%b
if %%d==INF set nameinf=%%c
if %%d==inf set nameinf=%%c
if %%e==INF set nameinf=%%d
if %%e==inf set nameinf=%%d
if %%f==INF set nameinf=%%e
if %%f==inf set nameinf=%%e
if %%g==INF set nameinf=%%f
if %%g==inf set nameinf=%%f
if %%h==INF set nameinf=%%g
if %%h==inf set nameinf=%%g
if %%i==INF set nameinf=%%h
if %%i==inf set nameinf=%%h
if %%j==INF set nameinf=%%i
if %%j==inf set nameinf=%%i
if %%k==INF set nameinf=%%j
if %%k==inf set nameinf=%%j
if %%l==INF set nameinf=%%k
if %%l==inf set nameinf=%%k
if %%m==INF set nameinf=%%l
if %%m==inf set nameinf=%%l
if %%n==INF set nameinf=%%m
if %%n==inf set nameinf=%%m
if %%o==INF set nameinf=%%n
if %%o==inf set nameinf=%%n
if %%p==INF set nameinf=%%o
if %%p==inf set nameinf=%%o
if %%q==INF set nameinf=%%p
if %%q==inf set nameinf=%%p
if %%r==INF set nameinf=%%q
if %%r==inf set nameinf=%%q
if %%s==INF set nameinf=%%r
if %%s==inf set nameinf=%%r
if %%t==INF set nameinf=%%s
if %%t==inf set nameinf=%%s
if %%u==INF set nameinf=%%t
if %%u==inf set nameinf=%%t
if %%v==INF set nameinf=%%u
if %%v==inf set nameinf=%%u
if %%w==INF set nameinf=%%v
if %%w==inf set nameinf=%%v
if %%x==INF set nameinf=%%w
if %%x==inf set nameinf=%%w
if %%y==INF set nameinf=%%x
if %%y==inf set nameinf=%%x
if %%z==INF set nameinf=%%y
if %%z==inf set nameinf=%%y
echo %nameinf%
)
[/more]

Но не работает - почему-то не срабатывает команда set после команды if. Но если повторить тот же код, то всё получается:
[more]
for /F "UseBackQ tokens=1-20 delims=\." %%a in ('%*"') do (
if %%c==INF set nameinf=%%b
if %%c==inf set nameinf=%%b
if %%d==INF set nameinf=%%c
if %%d==inf set nameinf=%%c
if %%e==INF set nameinf=%%d
if %%e==inf set nameinf=%%d
if %%f==INF set nameinf=%%e
if %%f==inf set nameinf=%%e
if %%g==INF set nameinf=%%f
if %%g==inf set nameinf=%%f
if %%h==INF set nameinf=%%g
if %%h==inf set nameinf=%%g
if %%i==INF set nameinf=%%h
if %%i==inf set nameinf=%%h
if %%j==INF set nameinf=%%i
if %%j==inf set nameinf=%%i
if %%k==INF set nameinf=%%j
if %%k==inf set nameinf=%%j
if %%l==INF set nameinf=%%k
if %%l==inf set nameinf=%%k
if %%m==INF set nameinf=%%l
if %%m==inf set nameinf=%%l
if %%n==INF set nameinf=%%m
if %%n==inf set nameinf=%%m
if %%o==INF set nameinf=%%n
if %%o==inf set nameinf=%%n
if %%p==INF set nameinf=%%o
if %%p==inf set nameinf=%%o
if %%q==INF set nameinf=%%p
if %%q==inf set nameinf=%%p
if %%r==INF set nameinf=%%q
if %%r==inf set nameinf=%%q
if %%s==INF set nameinf=%%r
if %%s==inf set nameinf=%%r
if %%t==INF set nameinf=%%s
if %%t==inf set nameinf=%%s
if %%u==INF set nameinf=%%t
if %%u==inf set nameinf=%%t
if %%v==INF set nameinf=%%u
if %%v==inf set nameinf=%%u
if %%w==INF set nameinf=%%v
if %%w==inf set nameinf=%%v
if %%x==INF set nameinf=%%w
if %%x==inf set nameinf=%%w
if %%y==INF set nameinf=%%x
if %%y==inf set nameinf=%%x
if %%z==INF set nameinf=%%y
if %%z==inf set nameinf=%%y
)
for /F "UseBackQ tokens=1-20 delims=\." %%a in ('%*"') do (
if %%c==INF set nameinf=%%b
if %%c==inf set nameinf=%%b
if %%d==INF set nameinf=%%c
if %%d==inf set nameinf=%%c
if %%e==INF set nameinf=%%d
if %%e==inf set nameinf=%%d
if %%f==INF set nameinf=%%e
if %%f==inf set nameinf=%%e
if %%g==INF set nameinf=%%f
if %%g==inf set nameinf=%%f
if %%h==INF set nameinf=%%g
if %%h==inf set nameinf=%%g
if %%i==INF set nameinf=%%h
if %%i==inf set nameinf=%%h
if %%j==INF set nameinf=%%i
if %%j==inf set nameinf=%%i
if %%k==INF set nameinf=%%j
if %%k==inf set nameinf=%%j
if %%l==INF set nameinf=%%k
if %%l==inf set nameinf=%%k
if %%m==INF set nameinf=%%l
if %%m==inf set nameinf=%%l
if %%n==INF set nameinf=%%m
if %%n==inf set nameinf=%%m
if %%o==INF set nameinf=%%n
if %%o==inf set nameinf=%%n
if %%p==INF set nameinf=%%o
if %%p==inf set nameinf=%%o
if %%q==INF set nameinf=%%p
if %%q==inf set nameinf=%%p
if %%r==INF set nameinf=%%q
if %%r==inf set nameinf=%%q
if %%s==INF set nameinf=%%r
if %%s==inf set nameinf=%%r
if %%t==INF set nameinf=%%s
if %%t==inf set nameinf=%%s
if %%u==INF set nameinf=%%t
if %%u==inf set nameinf=%%t
if %%v==INF set nameinf=%%u
if %%v==inf set nameinf=%%u
if %%w==INF set nameinf=%%v
if %%w==inf set nameinf=%%v
if %%x==INF set nameinf=%%w
if %%x==inf set nameinf=%%w
if %%y==INF set nameinf=%%x
if %%y==inf set nameinf=%%x
if %%z==INF set nameinf=%%y
if %%z==inf set nameinf=%%y
echo %nameinf%
)
[/more]

Но это как-то не аккуратно, да и не понятно почему не удвоенный код не работает?
Автор: Ortios
Дата сообщения: 05.05.2010 20:22
soft111

Цитата:
А как сделать так чтобы файл 1.txt перезаписывался?

Забудь эту идею. Т.е. если очень хочется, сделать конечно можно. Но использовать надо sed 4.1.5. (не знаю есть ли новее).

Код: sed -n -i -e :a -e "1,45!{P;N;D;};N;ba" 1.txt
Автор: wolf0425
Дата сообщения: 05.05.2010 20:36

Цитата:
Вся фишка в том, что он некорректно работает с концами строк, делая их на манер юникса.
использую GNU sed version 4.2 - к концами строк претензий вроде нет.
а -i работает, но оставляет после себя мусор в каталоге.
Автор: Ortios
Дата сообщения: 05.05.2010 21:13
wolf0425
Отстал я от жизни . Даже лень погуглить. А GNU sed 4.2 по прежнему тянет с собой пару dll ? А то уж очень привязался я к 3.62 с одним экзешником.
Автор: wolf0425
Дата сообщения: 05.05.2010 21:38

Цитата:
по прежнему тянет с собой пару dll
да, тянет, одним файлом никто не собрал.
меня поначалу тоже очень смущало.
Но все равно только с ФАРом юзаю, а там каталог утилит таскаю уже >15 Мб, так что решил забить - пара файлов ничего не решает
Автор: mouser
Дата сообщения: 05.05.2010 22:42
wolf0425
не знаешь как разблокировать к примеру по времени комп.

Добавлено:
wolf0425
)) от правильности написанного прошу не смеятся )))
Автор: soft111
Дата сообщения: 05.05.2010 23:52
а никто не подскажет, как можно в файле заменить все пробелы на знак "-". В файле только 1 строка.
Автор: Cosmogor
Дата сообщения: 06.05.2010 07:44
Доброго времени суток.

Настроить TPC/IP утилитой netsh драйвер сетевой платы,
собсна не вызывает проблем. Вот к примеру так.

Код:
netsh interface ip set address name="Linksys" source=static addr=192.168.0.1 mask=255.255.255.0


Но вся проблема настроить на вкладке "Беспроводные сети"
этого же драйвера Сетевое имя SSID ну и ключ сети заодно.
Хотелось бы автоматизировать весь этот процесс.
Может кто сталкивался с этим?
Не откажусь и от сторонней утилиты.


Спс.
Автор: wolf0425
Дата сообщения: 06.05.2010 08:57

Цитата:
не знаешь как разблокировать к примеру по времени комп.
не знаю.


soft111
Цитата:
В файле только 1 строка.

если одна то так.
Код: set /p str=<file.txt
1>file.txt echo.%str: =-%
Автор: king_stiven
Дата сообщения: 06.05.2010 10:00
Прошу подсказать, если кто знает консольный перекодировщик видео или с поддержкой комстроки, только с обязательной подгонкой кадра например с 16 на 9 до 4 на 3 без изменения пропорций.
Автор: Nagual
Дата сообщения: 06.05.2010 13:53
king_stiven
думаю, что mencoder должен подойти

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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