Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3868
- Репутация:127[+] [-]
|
95109Каким кодом лучше удалить из текстового файла все строчки, кроме первой ? for /f "usebackq delims=" %%a in ("in.txt") do >"out.txt" echo/%%a& goto :eof
|
Отправлено: 17-Май-2022 10:41
(спустя 1 час 3 минуты)
loban_ser
- Стаж: 6 лет 10 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
95079for /f "tokens=4" %%a in ('%WIMLIB% info --header %WIM%^| find "Image Count"') do echo %%a За это благодарю, лень справку по WIMLIB было читать, хотя и так работаетfor /f "tokens=3" %%a in ('%WIMLIB% info %WIM% ^| find "Image Count"') do echo %%a делал как-то код для удаления ярлыков Office из сборки SmokieBlahBlah@echo off cd /d %~dp0 set "_mask=Access PowerPoint Publisher" for %%i in (%_mask%) do set _end=%%i If "%~1" == "" goto :check for /f "tokens=4" %%a in ('wimlib-imagex.exe info --header "%~1"^| find "Image Count"') do set "ind=%%a" If /i Not "%~1"=="%~dp1_OFFICE.ESD" (2>nul (for /f "tokens=2 delims=: " %%a in ('wimlib-imagex.exe info "%~1" ^| find /i "Index:"') do for /f %%c in ('wimlib-imagex.exe info "%~1" "%%a" ^| findstr /ic:"Office"') do call :dlnk %%a %~1)) rem wimlib-imagex.exe optimize "%~1" --recompress --compress=LZMS:100 --solid pause goto :eof :check for %%b in ("*.esd") do If /i Not "%%b"=="_OFFICE.ESD" ( for /f "tokens=4" %%a in ('wimlib-imagex.exe info --header "%%b"^| find "Image Count"') do set "ind=%%a" 2>nul (for /f "tokens=2 delims=: " %%a in ('wimlib-imagex.exe info "%%b" ^| find /i "Index:"') do for /f %%c in ('wimlib-imagex.exe info "%%b" "%%a" ^| findstr /ic:"Office"') do call :dlnk %%a %%b) rem wimlib-imagex.exe optimize %%b --recompress --compress=LZMS:100 --solid ) pause goto :eof :dlnk if "%in%"=="%1" exit /b If not DEFINED f echo File %2&&echo. If not %2==%f% echo File %2&&echo. echo Index:%1 from %ind% for %%c in (%_mask%) do ( If "%%c"=="%_end%" ( wimlib-imagex.exe dir "%2" %1 --path="\ProgramData\Microsoft\Windows\Start Menu\Programs\%%c.lnk" >nul&&^ wimlib-imagex.exe update "%2" %1 --rebuild --force --command="delete --recursive '\ProgramData\Microsoft\Windows\Start Menu\Programs\%%c.lnk'"||^ echo No found %%c.lnk ) Else ( wimlib-imagex.exe dir "%2" %1 --path="\ProgramData\Microsoft\Windows\Start Menu\Programs\%%c.lnk" >nul&&^ wimlib-imagex.exe update "%2" %1 --force --command="delete --recursive '\ProgramData\Microsoft\Windows\Start Menu\Programs\%%c.lnk'"||^ echo No found %%c.lnk ) ) set in=%1&set f=%2&echo. exit /b
|
Отправлено: 19-Май-2022 17:02
(спустя 1 день 8 часов)
dimo70
- Стаж: 7 лет
- Сообщений: 3787
- Репутация:27[+] [-]
- Откуда: BG
|
Кто нибудь знает батник или другой простой способ заблокировать предложение и возможность для апгрейда Windows 10 21H2 до Windows 11, но чтоб не затрагивались обычные апдейты десятки? В сети есть описание через реестр, но не могу написать командный скрипт. ЗЯ Попробовал сам написать батник:@echo off >nul dism||(Powershell -Command Start-Process \"%~0\" -verb RunAs & exit) reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v TargetReleaseversion /t REG_DWORD /d 1 /f reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v TargetReleaseversionInfo /t REG_SZ /d 21H2 /f timeout /t 4 Правильно ли сделал? Добавлено через 37 минут 30 секунд: BlockWin11
_________________ Подпись отключена за нарушение правил форума
|
dimo70
- Стаж: 7 лет
- Сообщений: 3787
- Репутация:27[+] [-]
- Откуда: BG
|
Gvint64, странно, у меня тоже работает нормально.
_________________ Подпись отключена за нарушение правил форума
|
Gvint64
- Стаж: 4 года 7 месяцев
- Сообщений: 626
- Репутация:72[+] [-]
|
dimo70, У меня так - батник работает - а вот ехе отрабатывает но в реестре нет изменений.Упаковал по новому У тебя SFX x86 упакован и устанавливает сюда: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\Windows\WindowsUpdate]
|
Отправлено: 19-Май-2022 20:26
(спустя 1 час 33 минуты)
dimo70
- Стаж: 7 лет
- Сообщений: 3787
- Репутация:27[+] [-]
- Откуда: BG
|
|
Gvint64
- Стаж: 4 года 7 месяцев
- Сообщений: 626
- Репутация:72[+] [-]
|
dimo70, Теперь работает-такой же в моём сообщении выше.
|
dimo70
- Стаж: 7 лет
- Сообщений: 3787
- Репутация:27[+] [-]
- Откуда: BG
|
|
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Приветствую Столкнулся с задачкой: 1. Имеется текстовый вывод от команды, длинной, как правило, несколько тысяч строк 2. Нужно найти определенные строки и получить их части 3. Проблема в том, что в нужных строках нет уникальности, по которой их можно опознать 4. Но заметил такую тенденцию - двумя позициями выше есть строка уникального формата 5. Можно ли как-то осуществить поиск, чтобы после нахождения строки по определенной "фразе", брать в обработку строку, находяююся в двух позициях ниже?кусок из файлаE: activity (line=288) A: android:theme(0x01010000)=@0x7f1301ab A: android:name(0x01010003)="com.mxtech.videoplayer.ad.ActivityPrivacyMX" (Raw: "com.mxtech.videoplayer.ad.ActivityPrivacyMX") A: android:configChanges(0x0101001f)=(type 0x11)0x400 E: activity (line=292) A: android:theme(0x01010000)=@0x7f1302fd A: android:name(0x01010003)="com.mxtech.videoplayer.ad.online.tab.CricketWebViewActivity" (Raw: "com.mxtech.videoplayer.ad.online.tab.CricketWebViewActivity") A: android:screenOrientation(0x0101001e)=(type 0x10)0x1 E: activity (line=296) A: android:theme(0x01010000)=@0x7f1302fd A: android:name(0x01010003)="com.mxtech.videoplayer.ad.OnlineUsbActivityMediaList" (Raw: "com.mxtech.videoplayer.ad.OnlineUsbActivityMediaList") A: android:configChanges(0x0101001f)=(type 0x11)0x4a0 E: activity (line=300) A: android:theme(0x01010000)=@0x7f1302fd A: android:name(0x01010003)="com.mxtech.videoplayer.ad.online.tab.BehindWebViewActivity" (Raw: "com.mxtech.videoplayer.ad.online.tab.BehindWebViewActivity") A: android:screenOrientation(0x0101001e)=(type 0x10)0x3 E: activity (line=310) A: android:theme(0x01010000)=@0x7f1301ab A: android:name(0x01010003)="com.mxtech.videoplayer.ad.ActivityMediaList" (Raw: "com.mxtech.videoplayer.ad.ActivityMediaList") A: android:exported(0x01010010)=(type 0x12)0x0 A: android:launchMode(0x0101001d)=(type 0x10)0x1 A: android:configChanges(0x0101001f)=(type 0x11)0x2ffc A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x3 Что нужно искатьE: activity (line=288) A: android:theme(0x01010000)=@0x7f1301ab A: android:name(0x01010003)="com.mxtech.videoplayer.ad.ActivityPrivacyMX" (Raw: "com.mxtech.videoplayer.ad.ActivityPrivacyMX") A: android:configChanges(0x0101001f)=(type 0x11)0x400 E: activity (line=292) A: android:theme(0x01010000)=@0x7f1302fd A: android:name(0x01010003)="com.mxtech.videoplayer.ad.online.tab.CricketWebViewActivity" (Raw: "com.mxtech.videoplayer.ad.online.tab.CricketWebViewActivity") A: android:screenOrientation(0x0101001e)=(type 0x10)0x1 E: activity (line=296) A: android:theme(0x01010000)=@0x7f1302fd A: android:name(0x01010003)="com.mxtech.videoplayer.ad.OnlineUsbActivityMediaList" (Raw: "com.mxtech.videoplayer.ad.OnlineUsbActivityMediaList") A: android:configChanges(0x0101001f)=(type 0x11)0x4a0 E: activity (line=300) A: android:theme(0x01010000)=@0x7f1302fd A: android:name(0x01010003)="com.mxtech.videoplayer.ad.online.tab.BehindWebViewActivity" (Raw: "com.mxtech.videoplayer.ad.online.tab.BehindWebViewActivity") A: android:screenOrientation(0x0101001e)=(type 0x10)0x3 E: activity (line=310) A: android:theme(0x01010000)=@0x7f1301ab A: android:name(0x01010003)="com.mxtech.videoplayer.ad.ActivityMediaList" (Raw: "com.mxtech.videoplayer.ad.ActivityMediaList") A: android:exported(0x01010010)=(type 0x12)0x0 A: android:launchMode(0x0101001d)=(type 0x10)0x1 A: android:configChanges(0x0101001f)=(type 0x11)0x2ffc A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x3 Собственно, нужно искать строки с "activity (line=" и потом обрабатывать строку двумя позициями ниже. (предполагаю, что потом придется еще работать с большим колличеством дублей, так как в полученном выводе команды нашлось около двухсот упоминаний "activity (line=", а должно быть около 30ти,.. но это уже потом) ... Задача поддается решению средствами командной строки? +++ update +++ Вроде что-то начало получаться (использовал findstr с ключом /N чтобы получить номера строк, потом прибавлял единицу и планировал использовать как колличество строк для пропуска в цикле for), но потом заметил, что иногда строка с "android:theme" опущена, поэтому не всегда нужная строка будет двумя позициями ниже... так что, наверное, отбой... +++ update 2 +++ Пришла идея:for /f "delims=" %%A in ('type Manifest.txt^| findstr /ir "activity.(line= (Raw:"') do echo %%A>>Manifest_mod.txt пересохраняем в новый файл только те строки, где есть один из двух нужных кусков, при этом порядок не нарушается, так что искомый кусок всегда будет в следующей строке, после той где "activity (line=" (в теории) ... с этим уже можно работать ... Блин, а ведь использовать кавычки в качестве разделителя в цикле не получается. Нашел такой вариант решения:for /f "delims=" %%i in (text.txt) do ( set V=%%i call set V=%%V:"=µ%% for /f "tokens=2 delims=µ" %%a in ('call echo.%%V%%') do echo %%a ) Вроде работает стабильно, в отличие от другого найденного варианта: for /f delims^=^"^ tokens^=1 ... - это у меня нормально не заработало.. может не со всеми сочетаниями ключей срабатывает, мне ведь еще нужен skip
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3868
- Репутация:127[+] [-]
|
95526это у меня нормально не заработало Что это значит?set "var=123"456"789" for /f tokens^=^2^ delims^=^" %%a in ("%var%") do echo %%a выводит 456, как и положено.
|
Отправлено: 11-Июн-2022 13:04
(спустя 1 час 40 минут)
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Уже была поздняя ночь, когда я с этим столкнулся, но вроде как уверен что не работало. Я именно тот найденный пример не тестировал, а сразу пытался адаптировать под свои нужды, а у меня строка ключей иная. Готовое решение выглядит так:@echo off if EXIST "3_mod.txt" del /F/Q "3_mod.txt" for /f "delims=" %%A in ('type 3.txt^| findstr /ir "activity.(line= android:name"') do echo %%A>>3_mod.txt for /f "delims=:" %%A in ('type 3_mod.txt^| findstr /INC:"activity (line="') do ( set "n=%%A" call :22 ) echo. pause exit :22 for /f "skip=%n% delims=" %%A in (3_mod.txt) do ( set "V=%%A" call set V=%%V:"=µ%% for /f "tokens=2 delims=µ" %%a in ('call echo.%%V%%') do echo %%a exit /b ) Прописать кавычки в виде разделителя вторым способом не удалось, пробовал и переставлять ключи... вроде бы один раз получилось, но только когда я убирал какой-то из ключей... надо еще попробовать на свежую голову, раз уж вы говорите что способ рабочий)) +++ https://dropmefiles.com/vP0ky - вот архив с файлом 3.txt
|
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Приветствую Застрял на одном моменте, нужно выполнить действия при соблюдении двух условий, но второе условие имеет вариации. Нужно разобрать в цикле два токена, и выполнить действия, если превый токен имеет конкретное значение, а второй (вернее его часть) имеет значение из определенного списка допустимых. Если одно из условий не соблюдено, нужно выполнить другие действия. ... Собственно, сейчас у меня все работает, вот так:for /f "..." %%A in (...) do ( if "%%A"=="..." ( ... set "file_ext=%%~xB" ... ) ELSE GoTo :error ) if /i not "%file_ext%"==".ext1" if /i not "%file_ext%"==".ext2" ^ if /i not "%file_ext%"==".ext3" if /i not "%file_ext%"==".ext4" GoTo :error :error ... ... ... ... но мне бы хотелось уйти от GoTo, но и дублировать список действий не хочется... душа требует краткости)) нужно как-то привести к такому виду:for /f "..." %%A in (...) do ( if "%%A"=="..." и "%%xB"=="одному_из_значений" ( ... ... ... ) ELSE ( ... ... ... ) ) ... не удивлюсь, если меня тут засмеют, мол это первый класс, но что-то я не могу додумать
|
Отправлено: 23-Июн-2022 20:45
(спустя 1 час 11 минут)
Страница 73 из 94
Текущее время: 24-Дек 19:30
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|