JuraAD
- Longevity: 3 years 2 months
- Posts: 80
- REPUTATION:27[+] [-]
|
cartmenezz, Ну, можно через busybox bash сделать у него круче возможности по обрезке строкПримерКаталог .\00.get_pic.cmd .\bin\00.get_pic.sh .\bin\busybox.man .\bin\busybox32.exe .\bin\busybox64.exe .\00.get_pic.cmd @echo off&setlocal enableextensions enabledelayedexpansion set a=%~dp0 set a=%a:\=/% %~dp0bin\busybox64.exe bash -c "%a%bin/00.get_pic.sh"; endlocal&exit /b 0 .\bin\00.get_pic.sh #!bash dir_w=$(pwd)/html_1; echo -e "\n###\t$(dirname ${0})"; echo -e "\n###\t${0}"; echo -e "###\t${dir_w}\n"; #function html_w { # echo ${1}; #}; html_w () { echo -e "###\t${1}"; }; for file_w in $(find "${dir_w}" -name "*.html" -type f -print;); do html_w ${file_w}; done; Это заготовка для разбора загруженных файлов htmlРабота со строками# Удаление с начала строки, до первого совпадения f="path1/path2/file.ext" extension="${f#*.}" # = "ext" # Удаление с начала строки, до последнего совпадения f="path1/path2/file.ext" filename="${f##*/}" # = "file.ext" # Удаление с конца строки, до первого совпадения f="path1/path2/file.ext" dirname="${f%/*}" # = "path1/path2" # Удаление с конца строки, до последнего совпадения f="path1/path2/file.ext" root="${f%%/*}" # = "path1" ### sed монстр обработки строк в файлах по регулярным выражениям - винде и не снилось... -))) и т.д... busybox bash Как удачно написал -)))sed.test3_v2.cmd @echo off&setlocal enableextensions enabledelayedexpansion set a=%~dp0 set a=%a:\=/% B:\sys\util\linux\x64_\busybox.exe sed "s@\(.*/\)\([^=]*\)=*.*@\1\t\2@" "%a%.test3.txt" >"%a%.test3_.txt" endlocal&exit /b 0 получаешь файл с твоими строками разделенными табуляцией .test3_.txt -) Так годится? Чтоб перевод строки был годным для выни и dos лучше так сделать ... B:\sys\util\linux\x64_\busybox.exe sed "s@\(.*/\)\([^=]*\)=*.*@\1\t\2\r@" "%a%.test3.txt" >"%a%.test3_.txt" ...
|
Отправлено: 12-Jun-2023 00:07
(after 1 day 11 hours)
cartmenezz
- Longevity: 9 years 1 month
- Posts: 527
- REPUTATION:14[+] [-]
- Location: Калининград
|
JuraAD, Более чем) Я и сам в итоге пришел к sed, так как с ним нужный результат с минимумом движений. Мне, собственно, нужно обрабатывать строки полученные с Android устройств, и там тоже есть sed (как выяснилось), решил сделать предварительную обработку сразу на устройстве. Правда, я совершенно не разбираюсь в командах Линукса (bash?) и sed в частности. Но благодаря гуглу немного разобрался в синтаксисе sed, и вроде как нужный мне результат можно получить коротенькой командой:sed -e 's/.apk=/.apk /g'" и ".apk=" превращается в ".apk " и уже можно нормально обработать в цикле. Не знал что есть sed под винду. Подскажите, мне будет достаточно одного "busybox.exe" для использования sed? какой минимальный набор файлов для стабильной работы? мне нужен портативный варинт... Есть какие-то требования к системе? установка C++/.Net не требуется? и еще, может быть знаете, sed есть в любом Линуксе? если да, хочется верить что и в Android так же... так и не смог найти инфы, подозреваю что это неотъемлимая часть системы (вернее хочу в это верить), но подтвердить не удалось
|
vovan1982
- Longevity: 9 years 8 months
- Posts: 1121
- REPUTATION:76[+] [-]
- Location: Ростов-на-Дону
|
cartmenezz, андроид же на основе Линукса собран. У него busybox есть. Ну а если нет, то его можно установить. Из себя он представляет подобие cmd.exe с комплектом встроенных программ bush. Но набор неполный.
|
Отправлено: 12-Jun-2023 11:33
(after 2 hours 57 minutes)
JuraAD
- Longevity: 3 years 2 months
- Posts: 80
- REPUTATION:27[+] [-]
|
... Не знал что есть sed под винду. Подскажите, мне будет достаточно одного "busybox.exe" для использования sed? какой минимальный набор файлов для стабильной работы? мне нужен портативный варинт... Есть какие-то требования к системе? установка C++/.Net не требуется? ... busybox.exe --help в помощь... вполне автономная утилитке, под вынь-pe не запускал, мож и руганется на runtime какой-нибудь... Можно вручную собрать из пакетов, но я задолбался и когда-то написал скрипты для сборки утилит из выкачанных cygwin и msys, выполнить можно из busybox bash, список необходимого идет после "##### pkglist", устанавливается все с зависимостями, получается структура порядка 50-100МБ (тока проверить нужно - давно не обновлял -))) )cygwin.inst_c.sh #!bash #${1} srcini e:\.download\.prog\.cygwin.6\x86_64\setup.ini #${2} srcdir e:\.download\.prog\.cygwin.6 #${3} dstdir o:\sys\util\linux\c64.6 ##set ##echo ${#} ${*} _error() { echo -en 'srcini='${1//\\/\\\\}'\nsrcdir='${2//\\/\\\\}'\ndstdir='${3//\\/\\\\}'\n'; }; ##### default set echo -en '###\tdefault set\n'; ##_error ${*}; if [ -z "${1}" -o -z "${2}" -o -z "${3}" ]; then echo 'error'; _error ${*}; exit 1; fi; rm -rf "${3}"; mkdir -p "${3}"; ##### get pkglist (end of list - '#' or 'eof') echo -en '###\tget pkglist\n'; dstlst="${3}/pklist"; dstini="${dstlst}.ini"; exec 5>"${dstlst}" 6<"${dstlst}" 7>"${dstini}" 8<"${dstini}"; >&5 sed -n '/^#####\tpkglist/I,/^#/{s@^[ \t]\+@@;s@[ \t#]\+.*$@@;ta;:a;s@^$@@;tz;p;:z}' "${0}"; while read str; do echo -en '# get:'${str}'\n'; echo -e $(sed -n '/^\x40 '${str}'$/I,/^[\x40\x5b]/I{s@^[ \t\x40\x5b].*$@@;ta;s@^\([rvi]\)\(equires\|ersion\|nstall\)\x3a *@\1=@;Ta;s@^\(i=[^ ]*\).*$@\1@;p;:a;}' "${1}") done <&6; exec 5>&- 6>&- 7>&- 8>&-; exit; ##### pkglist bash bzip2 coreutils diffutils gawk grep gzip mc ncurses readline sed tar tzdata util-linux xz msys.inst_m.sh #!bash #${1} srcini /mnt/e/.download/.prog/.msys.6/x86_64/msys.db.tar.gz #${2} srcdir /mnt/e/.download/.prog/.msys.6/x86_64 #${3} dstdir /mnt/O/sys/util/linux/m64.6 #echo ${#} ${*} _error() { echo -en 'srcini='\t${1//\\/\\\\}'\n\tsrcdir='${2//\\/\\\\}'\n\tdstdir='${3//\\/\\\\}'\n'; }; ##### default set echo -en '###\tdefault set\n'; if [[ -z "${1}" || -z "${2}" || -z "${3}" ]]; then echo -en 'err:\n'; _error ${*}; exit 1; fi; ##### set pkglist echo -en '###\tset pkglist\n'; dstdir="${3}"; dstarch="${3}/_"; dstlst="${3}/pklist"; dstini="${dstlst}.ini"; dsterr="${dstlst}.err"; dstcfg="${dstlst}.cfg"; rm -rf "${dstdir}" "${dstarch}"; mkdir -p "${dstdir}" "${dstarch}"; if ! ([[ -r "${1}" ]] && $(2>/dev/null tar -C "${dstarch}" -xf "${1}");); then echo -en 'err:\t'${1}'\n'; exit 1; fi; for a0 in $(ls -1A "${dstarch}";); do echo -en '\t'${a0}'\n'; [[ -f "${dstarch}/${a0}/desc" ]] || (>>"${dsterr}" echo -en 'err:\t'${a0}'/desc\n'; continue;); >>"${dstini}" echo -en $(sed -n '/^%NAME%/I{n;p}' "${dstarch}/${a0}/desc")'\t'$(sed -n '/^%FILENAME%/I{n;p}' "${dstarch}/${a0}/desc")'\t'$(sed -n '/^%VERSION%/I{n;p}' "${dstarch}/${a0}/desc")'\t'$(sed -n '/^%DEPENDS%/I{n;:a;s@\n$@@;tz;N;Ta;:z;s@\n@ @g;s@[=\<\>][^ ]*@@g;p}' "${dstarch}/${a0}/desc")'\n'; done; rm -rf "${dstarch}"; ##### get pkglist echo -en '###\tget pkglist\n'; >"${dstlst}" sed -n '/^#####\tpkglist/I,/^#/{s@^[ \t]\+@@;s@[ \t#]\+.*$@@;ta;:a;s@^$@@;tz;p;:z}' "${0}"; while read a0; do echo -en '\t'${a0}'\n'; a1=$(sed -n '/^'${a0}'\t/I{s@^[^\t]*\t@@;s@\t[^\t]*\t@\t@;p}' "${dstini}";); for a9 in ${a1#* }; do [[ -z $(sed -n '/^'${a9//./\\.}'$/Ip' "${dstlst}";) ]] && >>"${dstlst}" echo -en ${a9}'\n'; done; [[ -z ${a1} ]] && >>"${dsterr}" echo -en 'err:\t'${a0}'\n' || (>>"${dstcfg}" echo -en ${a1% *}'\n'; 2>/dev/null tar -C "${dstdir}" -xf "${2}/${a1% *}";) done <"${dstlst}"; exit; ##### pkglist msys2-runtime bash bzip2 coreutils diffutils gawk grep gzip mc sed tar util-linux xz #tzcode #ncurses #readline ссылкиМожно взять нужный пакет и по зависимостям добавить нужные, в скрипте видно как -) Я тупо брал syncovery и выкачивал репозитории (осторожно - много ГБ -))) ), когда нужно - обновлял ftp://mirror.yandex.ru/mirrors/msys2/mingw http://repo.msys2.org/mingw/i686/ http://repo.msys2.org/mingw/x86_64/ http://repo.msys2.org/mingw/sources/ ftp://mirror.yandex.ru/mirrors/msys2/msys http://repo.msys2.org/msys/i686/ http://repo.msys2.org/msys/x86_64/ http://repo.msys2.org/msys/sources/ ftp://sourceware.org/pub/cygwin/ Готовые выложить некуда, а общие ресурсы лень использовать - регистрироваться... -) А в общем, есть отдельными файлами утилитки, например: https://gnuwin32.sourceforge.net/packages/sed.htm https://sourceforge.net/projects/gnuwin32/files/sed/ https://sourceforge.net/projects/unxutils/files/unxutils/current/ - если смущает год выпуска, вполне рабочие варианты - это базовые утилитки для linux, там уже давно ничего не меняется (почти) -)))
|
cartmenezz
- Longevity: 9 years 1 month
- Posts: 527
- REPUTATION:14[+] [-]
- Location: Калининград
|
100581андроид же на основе Линукса собран. У него busybox есть. Ну а если нет, то его можно установить. Вроде бы, как раз надо устанавливать. Все изобилие команд bash и не нужно, я их все равно не знаю)) А вот grep и sed похоже на всех Android устройствах есть, ну или почти на всех. Grep я уже давно немножко задействовал и пока проблем не встречал, и за последние несколько дней успел немного попроверять наличие sed, и пока не наткнулся на отсутствие. Правда попался один старенький планшет Prestigio, где sed был, но команда не отрабатывала как надо... а так, везде все было нормально, и на смартфонах и на Android TV / Google TV. Пришел к такому варианту: - Обрабатывать строки сразу на устройстве через sed - Добавить резервный вариант, с обработкой на ПК (медленнее, но без сюрпризов типа "sed не обнаружен") Но теперь, наверное, в виде второго резервного варианта оставлюсь на обработке на ПК, но так же через sed, раз уж такая возможность есть. Опробую, премного благодарен. Ту версию busybox вчера опробовал, забрав один только файл busybox.exe, sed работал, ругани на отсутствие чего-либо не было. И на VirusTotal практически чисто, одна реакция.
|
pitronic
- Longevity: 3 years 1 month
- Posts: 25
- REPUTATION:0[+] [-]
|
Доброго времени суток. Мне нужен батник запуск программмы на флешке с параметром. Есть у меня брайзер Cent browser portable, он у меня на флешке. Как вы понимаете в дугом компьютере буква флешки меняется. В этом браузере у меня 4 профиля. Мне как то давали здесь, запуск батника с поиском на всех дисках. Попробовал заменить на exe без параметров запускается норм, а спараметром профиля не как. Так выглядит рабочий батник с обсолютным путём: start "" "E:\Cent Browser\chrome.exe" --profile-directory="Profile 1" в настоящий момент. У меня возникла идея прописать эту команду на все диски. Но нужна доработка напишу только на два и условия которое хочу. Когда ответите тоже достаточно только два. ну вобщем идея такая. C:\Cent Browser\chrome.exe" --profile-directory="Profile 1" дальше нужно если путь правильный, запуск программы и закрытие батника. Еслин нет сообщения об ошибке игнорируютя и не выводятся, а выполняется следующая команда. D:\Cent Browser\chrome.exe" --profile-directory="Profile 1" Сообщений вообще не каких не надо, работа в тихом режиме. На все диски писать не надо, сам допишу, достаточно на два. Вобщем надо решить эту задачу скидываю скриншот https://habrastorage.org/webt/_s/jf/nm/_sjfnmxt3odz...s3n8kbl8zjg.jpeg
|
Отправлено: 13-Jun-2023 12:33
(after 1 hour 23 minutes)
Ander_73
- Longevity: 7 years 8 months
- Posts: 3750
- REPUTATION:127[+] [-]
|
pitronic, если нужно просто найти хром на флешке, то примерно такset file=Cent Browser\chrome.exe for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do >nul 2>&1 dir "%%i:\%file%"&& ( start "" "%%i:\%file%" --profile-directory="Profile 1" goto next ) echo Браузер не найден! goto :eof :next
|
pitronic
- Longevity: 3 years 1 month
- Posts: 25
- REPUTATION:0[+] [-]
|
100590pitronic, если нужно просто найти хром на флешке, то примерно так set file=Cent Browser\chrome.exe for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do >nul 2>&1 dir "%%i:\%file%"&& ( start "" "%%i:\%file%" --profile-directory="Profile 1" goto next ) echo Браузер не найден! goto :eof :next Не скинешь код мне в личку чтоб я сохранил у себя? А то тут ещё вопросы будут, ищи его потом. Пожалуйста.
|
pitronic
- Longevity: 3 years 1 month
- Posts: 25
- REPUTATION:0[+] [-]
|
Доброго времени суток форумчане. Необходим батник тихой установки программ но так чтоб с уневирсальным ключом, если это возможно, чтоб не искать ключ для конкретного инсталятора. На примере прогаммы Cheat Engine. Вобщем такие команды надо, сначало запуск инстолятора CheatEngine75.exe с унивирсальным ключом, дождатся установки, Найти папку Cheat Engine 7.5 в папках Program Files (x86) или Program Files (программы разных разрядностей выбирают разные папки из этих двух) Если папка не найдена не выводить ообщений об ошибки, искать следующюю папку, если найдена выкинуть на рабочий стол ярлык файла Cheat Engine.exe с именем Cheat Engine в дириктории программы и если необходимо скопировать файлы или папки, на пример папку languages. этот момент прокоментировать какие строки затереть если необходимости копирования нет. Ну и разумеется всё это в тихом режиме без запуска инсталятора, в конце вывести сообщение что установка выполнена успешно.
|
Отправлено: 01-Sep-2023 19:52
(after 2 months 11 days)
Gvint64
- Longevity: 4 years 4 months
- Posts: 606
- REPUTATION:70[+] [-]
|
Last edited by Gvint64 on 2023-11-14 23:04; edited 6 times in total
|
Отправлено: 27-Oct-2023 12:05
(after 1 month 25 days)
grafmontekristo
- Longevity: 1 year
- Posts: 17
- REPUTATION:0[+] [-]
|
Здравствуйте. Напишите пожалуйста батник, если его закинуть в папку и запустить, чтобы содержимое этой папки, а еще лучше сама папка вносилась исключения защитника Windows. Как сделал Ратиборус, если его запустить в папке, она добавится в исключения Защитника. Используйте его для папки, в которую собираетесь поместить KMS Tools. Для других фалов батник не подходит, только для KMS Tools.
echo "%~dp0" pause wmic /NAMESPACE:\\root\Microsoft\Windows\Defender PATH MSFT_MpPreference call Add ExclusionPath="%~dp0" pause
|
Отправлено: 27-Oct-2023 15:45
(after 2 hours 36 minutes)
grafmontekristo
- Longevity: 1 year
- Posts: 17
- REPUTATION:0[+] [-]
|
Спасибо, вроде сработала:
Не срабатывает, если в названии папки есть пробел.
|
Отправлено: 27-Oct-2023 16:54
(after 1 hour 8 minutes)
Ander_73
- Longevity: 7 years 8 months
- Posts: 3750
- REPUTATION:127[+] [-]
|
Ты чего-то с кавычками перемудрил. Имелось ввиду только тут:ExclusionPath="C:\Path\to\folder with spaces\\"
|
Отправлено: 27-Oct-2023 18:07
(after 1 hour 13 minutes)
grafmontekristo
- Longevity: 1 year
- Posts: 17
- REPUTATION:0[+] [-]
|
101488ExclusionPath="C:\Path\to\folder with spaces\\" В оригинале прописанно ExclusionPath="%~dp0", это не значит, что Системный диск? Если ошибаюсь, подправьте.echo "%~dp0" pause wmic /NAMESPACE:\\root\Microsoft\Windows\Defender PATH MSFT_MpPreference call Add ExclusionPath="%~dp0" pause Я сделал так и вроде добавляет любую папку в исключения, если меду названиями папки не пробелов:echo "%~dp0" pause wmic /NAMESPACE:\\"root\Microsoft\Windows\Defender PATH MSFT_MpPreference call Add ExclusionPath="%~dp0" pause
Last edited by grafmontekristo on 2023-10-27 18:23; edited 1 time in total
|
Page 85 of 92
Current time is: 05-Oct 05:54
All times are UTC + 3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|