[Quote]

    Ander_73
  • 15549
  • Longevity: 5 years 5 months
  • Posts: 2784
  • REPUTATION:127

    [+] [-]
95109Каким кодом лучше удалить из текстового файла все строчки, кроме первой ?
for /f "usebackq delims=" %%a in ("in.txt") do >"out.txt" echo/%%a& goto :eof

[Quote]

    rekshd
  • 19892
  • Longevity: 3 years 6 months
  • Posts: 223
  • REPUTATION:5

    [+] [-]
95111
Код:
for /f "usebackq delims=" %%a in ("in.txt") do >"out.txt" echo/%%a& goto :eof
Спасибо, пошол применять aa

[Quote]

    loban_ser
  • 17796
  • Longevity: 4 years 4 months
  • Posts: 563
  • REPUTATION:23

    [+] [-]
95079for /f "tokens=4" %%a in ('%WIMLIB% info --header %WIM%^| find "Image Count"') do echo %%a
aa
За это благодарю, лень справку по 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

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years 7 months
  • Posts: 3446
  • REPUTATION:40

    [+] [-]
  • Location: 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

[Quote]

    Gvint64
  • 24573
  • Longevity: 2 years 1 month
  • Posts: 409
  • REPUTATION:35

    [+] [-]
dimo70, aa
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

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years 7 months
  • Posts: 3446
  • REPUTATION:40

    [+] [-]
  • Location: BG
Gvint64, странно, у меня тоже работает нормально.

[Quote]

    Gvint64
  • 24573
  • Longevity: 2 years 1 month
  • Posts: 409
  • REPUTATION:35

    [+] [-]
dimo70, У меня так - батник работает - а вот ехе отрабатывает но в реестре нет изменений.Упаковал по новому
У тебя SFX x86 упакован и устанавливает сюда:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\Windows\WindowsUpdate]

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years 7 months
  • Posts: 3446
  • REPUTATION:40

    [+] [-]
  • Location: BG
Gvint64, понял, исправлю. ay az
Можешь проверить? aa
BlockWin11.exe

[Quote]

    Gvint64
  • 24573
  • Longevity: 2 years 1 month
  • Posts: 409
  • REPUTATION:35

    [+] [-]
dimo70, Теперь работает-такой же в моём сообщении выше.

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years 7 months
  • Posts: 3446
  • REPUTATION:40

    [+] [-]
  • Location: BG
Gvint64, извини дружище, не заметил. Главное сработала полезность. az
А то что получается. На сервис ставлю винду 10. Через время приходят с 11 (нажимают там на кнопочку) и потом ничего толком не работает нормально. aq
Приходиться заного переставлять. ag
Сейчас заблокирую и все! Винда 11 прямо разозлила уже.

[Quote]

    cartmenezz
  • 1384
  • Longevity: 6 years 10 months
  • Posts: 445
  • REPUTATION:12

    [+] [-]
  • Location: Калининград
Приветствую aa
Столкнулся с задачкой:
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

[Quote]

    Ander_73
  • 15549
  • Longevity: 5 years 5 months
  • Posts: 2784
  • REPUTATION:127

    [+] [-]
95526это у меня нормально не заработало
Что это значит?
set "var=123"456"789"
for /f tokens^=^2^ delims^=^" %%a in ("%var%") do echo %%a
выводит 456, как и положено.

[Quote]

    cartmenezz
  • 1384
  • Longevity: 6 years 10 months
  • Posts: 445
  • REPUTATION:12

    [+] [-]
  • Location: Калининград
95531Что это значит?
Уже была поздняя ночь, когда я с этим столкнулся, но вроде как уверен что не работало. Я именно тот найденный пример не тестировал, а сразу пытался адаптировать под свои нужды, а у меня строка ключей иная.
Готовое решение выглядит так:
@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

[Quote]

    cartmenezz
  • 1384
  • Longevity: 6 years 10 months
  • Posts: 445
  • REPUTATION:12

    [+] [-]
  • Location: Калининград
Приветствую aa
Застрял на одном моменте, нужно выполнить действия при соблюдении двух условий, но второе условие имеет вариации.
Нужно разобрать в цикле два токена, и выполнить действия, если превый токен имеет конкретное значение, а второй (вернее его часть) имеет значение из определенного списка допустимых.
Если одно из условий не соблюдено, нужно выполнить другие действия.
...
Собственно, сейчас у меня все работает, вот так:
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 (
    ...
    ...
    ...
  )
)
...
не удивлюсь, если меня тут засмеют, мол это первый класс, но что-то я не могу додумать

[Quote]

    Ander_73
  • 15549
  • Longevity: 5 years 5 months
  • Posts: 2784
  • REPUTATION:127

    [+] [-]
set var=& for %%f in (ext1 ext2 ext3 ext4) do if %%~xB==.f%% set var=1
if defined var ...
Задать/считать значение переменной внутри for можно только при заданном EnableExpansion. А вот defined работает всегда.
Если вы понимаете, о чём я... be

Page 73 of 75


Display posts:    

Current time is: 04-Jul 18:15

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