Удалите первые две буквы каждой строки в текстовом файле - PullRequest
0 голосов
/ 06 декабря 2018

В основном я сгенерировал текстовый файл через wmic со всеми текущими обновлениями Windows на одной из моих клиентских систем.

Текстовый файл выглядит так:

HotFixID
KB3140768
KB3150513
KB...(and so on)

Итак,Я хочу выполнить команду через cmd (даже если мне нужно получить какой-нибудь «внешний» инструмент, чтобы это сделать), чтобы удалить KB в начале каждой строки и оставить меня только с цифрами.

Мне удалось "прыгнуть" HotFixID с помощью:

for /f "skip=1" (...)

Но мне не удалось удалить KB*.

Моя идея состоит в том, чтобымассовое удаление всех обновлений Windows сразу, через cmd / командный файл.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Вам не нужен отдельный текстовый файл, но вы можете анализировать вывод wmic напрямую, строка cmd:

> for /f "skip=1delims=KB " %A in ('wmic qfe get HotfixID') do @for /f "delims= " %B in ("%A") do @echo:%B
4100347
4343669
...

В пакетном файле

@Echo off
for /f "skip=1delims=KB " %%A in ('wmic qfe get HotfixID'
   ) do for /f "delims= " %%B in (%%A) do echo:%%B

Этот простой подход работает какведущие разделители игнорируются, и
при условии, что содержимое для анализа не содержит букв, используемых в качестве разделителей.

0 голосов
/ 06 декабря 2018

Вот одно из возможных решений (для cmd):

for /f "skip=1 delims=KB" %A IN (your_file.txt) do @echo %A >> your_new.txt

Для пакетного файла вы должны попробовать:

for /f "skip=1 delims=KB" %%A IN (your_file.txt) do echo %%A >> your_new.txt
  • skip=1 опция пропускаетпервая строка вашего файла, которая HotFixID.

  • delims=KB, не разбирает K и B на токены.

Для лучшего понимания команды / цикла for введите for /? в новом cmd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...