-1

Я пытаюсь переименовать все файлы в папке с помощью пакетного сценария, но получаю неправильную синтаксическую ошибку, которую, похоже, не могу определить:

for %%f in (%Source%\*DebugLog.Config) do %%f ren %%f "%Source%\%ProjectName%.*DebugLog.Config"

Идея заключается в том, что я префикс любого файла, который заканчивается в DebugLog.Конфиг так, чтобы он стал "projectName".DebugLog.Config»

Где это идет не так?

2 ответа2

2

Я получаю неправильную синтаксическую ошибку, которую не могу определить

for %%f in (%Source%\*DebugLog.Config) do %%f ren %%f "%Source%\%ProjectName%.*DebugLog.Config".

В вашем командном файле есть несколько ошибок (2 из которых я сделал сам).

Как указал мне в комментариях в другом месте dbenham:

Цель REN не может включать диск или путь. Это должно быть только имя и расширение

Использование простого FOR рискует переименовать файл более одного раза - не хорошо :-( Лучше использовать FOR /F с DIR /B

Посмотрите его ответ, добавьте «текст» в конец нескольких имен файлов для более подробного объяснения выше.

Кроме того, do %%f имеет смысла, это просто do .

Вот рабочий пакетный файл:

@echo off
pushd %source%
for /f "delims= eol=:" %%f in ('dir /b /a-d *DebugLog.Config') do ren "%%f" "%ProjectName%.%%f"
popd

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • dir - Показать список файлов и подпапок.
  • for /f - Циклическая команда против результатов другой команды.
  • popd - изменить каталог обратно на путь / папку, которая была сохранена последней командой PUSHD.
  • pushd - изменить текущий каталог / папку и сохранить предыдущую папку / путь для использования командой POPD.
  • ren - переименовать файл или файлы.
0

Это идет не так в более чем одном месте. Предполагая, что %Source% заканчивается обратной косой чертой (правка: кажется, что нет, поэтому добавляем обратную косую черту :)

for %%f in (%Source%\*DebugLog.Config) do ren "%%f" "%ProjectName%.%%~nxf"

Цель ren не должна содержать путь, поэтому %%~nxf извлекает Name и Extention из %%f .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .