Я пытаюсь сделать пакетный скрипт для переименования файлов в каталоге.Все имена файлов хранятся в текстовом файле, и я читаю их в сценарии.Имена файлов - это обновления, выпущенные Microsoft.Поскольку загруженные имена файлов не в шаблонном формате, у меня возникают трудности с переименованием сотен файлов.например, если имя файла - windows6.1-KB1234567, обновление for_IE10 для RCE.msu
Я хочу переименовать его в KB1234567
Я получил успех в сценариипереименование, где номер КБ находится внутри скобок с помощью () в разделителях, но я застрял при получении номеров КБ из вышеупомянутых видов файлов.Где-то числа КБ находятся между дефисами и где-то между пробелами.
Также ERRORLEVEL начинает давать неверный код возврата, когда я пытаюсь использовать команду findstr или find .Возвращает ноль, даже если слово KB найдено или нет.
Итак, я ищу быстрое решение для этого требования.
EDIT1: скрипт, который я использовал для поиска номеров КБ в квадратных скобках
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=()" %%x in (D:\updates\list1.txt) do (
echo %%y
EDIT2: код, который я пытаюсьis: -
for /f "tokens=1-10 delims=-" %%a in (D:\updates\list2.txt) do (
echo %%c | find /I "kb"
echo Errorlevel for matching KB in %%c is- %ERRORLEVEL%
)
Файл list2.txt содержит (имена файлов примеров):
ie11-windows6.1-kb123456-x86_d43434342344ef.msu
IE8-windows6.0-KB234567-X86.msu
windows6.1-kb345678-x86_cae45678123_nov_17.msu
В настоящее время я нацеливаюсь на имена файлов с дефисами.После этого я напишу сценарий для имен файлов, содержащих пробелы.Сценарий EDIT2, который я создал для проверки уровня ошибки команды find.Он разделит слова, разделенные дефисами, и проверит наличие дефиса.Но независимо от того, что я делаю, даже если он находит совпадение слова КБ в отдельных словах или нет, ErrorLevel возвращает ноль.Для простоты сейчас я просто даю сценарий, который выберет третье слово и найдет в нем kb.Третье имя файла не имеет КБ, это третье слово, но уровень ошибки для этого имени файла также равен нулю.
Спасибо
Kriss