#batch-file #batch-processing
#пакетный файл #пакетная обработка
Вопрос:
я загружаю имена файлов, подобные этому .. batchengine-6099-1283555555-60054_20100910_0006 .era и хочу переименовать их в 60054_20100910_0006.era. Имена меняются, но формат тот же, требуется инструкция для переименования всех больших файлов, заканчивающихся на .era
Ответ №1:
У меня нет доступа к окну Windows, но что-то вроде:
SETLOCAL EnableExtensions EnableDelayedExpansion
FOR %%I IN (batchengine-*.era) DO (
SET NAME=%%~nI
RENAME "%%I" "!NAME:~28!%%~xI"
)
ENDLOCAL
Введите FOR /?
, SET /?
и SETLOCAL /?
в консоли для получения всех подробностей о синтаксисе. Надеюсь, у меня есть что-то очень близкое. Вам нужно ввести новые переменные внутри цикла, чтобы вы могли получить доступ к расширенному синтаксису для подстрочного индекса — например, !NAME:~28!
выбирает подстроку, начинающуюся с символа 28. !NAME!
— это ссылка на отложенное расширение. Необходимость этого объясняется на одной из страниц краткого описания команд.
Комментарии:
1. кажется, что это выполняется без остановки, но по-прежнему не работает ..echo SETLOCAL EnableExtensions EnableDelayedExpansion для /f %%I В (‘dir / b batchengine *.era’) УСТАНОВИТЕ [NAME=[[%%~nI]] и УСТАНОВИТЕ [NEWNAME=[[!NAME:~28!%%~xI]] и ПЕРЕИМЕНУЙТЕ ! ИМЯ! !НОВОЕ ИМЯ! amp; приостановка приостановка endlocal
2. Если бы я оставил ~ 28!.%% с . имя файла, которое я мог видеть при запуске, было 6066 ..era, а не 6066.era?
3. [NAME=[batchengine1-6099-12705488236217491.GP010698_61101_20100406_000217]] [NEWNAME=[ИМЯ:~28.era]
4. после запуска пакета я дал команду set. это результат выполнения команды set. похоже, что часть newname не работает. пакетный файл не может найти файл ….? вот как выглядит мой пакет: echo SETLOCAL EnableExtensions EnableDelayedExpansion ДЛЯ %I В (batchengine*.era) DO ( SET [NAME=[%~nI]] SET [NEWNAME=[NAME:~28.era] ПЕРЕИМЕНОВАТЬ ! ИМЯ! !НОВОЕ ИМЯ! ) ENDLOCAL
5. Я думаю, что вижу проблему. Я забыл, что
%%~xI
включает в себя.
расширение from. Я исправил свой ответ тем, что я действительно тестировал это на своем Windows box.