Добавить имя папки в начало имени файла

у меня есть структура каталогов, как показано ниже:

Folder
  > SubFolder1
    > FileName1.abc
    > Filename2.abc
    > .............

  > SubFolder2
    > FileName11.abc
    > Filename12.abc
    > ..............

  > ..........

etc. Я хочу переименовать файлы внутри подпапок как:

SubFolder1_Filename1.abc
SubFolder1_Filename2.abc
SubFolder2_Filename11.abc
SubFolder2_Filename12.abc

т. е. добавить имя папки в начале имени файла с разделителем "_". Структура каталогов должна оставаться неизменной. Примечание: начало имени файла такое же. например, в файле case выше*.

Я сделал ниже скрипт


for /r "PATH" %%G in (.) do (
  pushd %%G
  for %%* in (.) do  set MyDir=%%~n* 
  FOR %%v IN (File*.*) DO REN %%v  "%MyDir%_%%v" 
  popd
  ) 

проблема с выше скрипт что он принимает только одно имя подпапки и помещает его в начало имени файла независимо от папки.

30
задан DavidPostill
19.01.2023 3:33 Количество просмотров материала 3619
Распечатать страницу

4 ответа

вы можете сделать это более удобным для пользователя способом, используя ReNamer, С одним правилом переименования:

  1. вставить": File_FolderName:_ " как префикс (пропустить расширение)

вы также можете сохранить его как пресет и использовать его для переименование командной строки.

enter image description here

5
отвечен dezlov 2023-01-20 11:21

переименовывать только файлы в непосредственных дочерних папках

@echo off
pushd "Folder"
for /d %%D in (*) do (
  for %%F in ("%%~D\*") do (
    for %%P in ("%%F\..") do (
      ren "%%F" "%%~nxP_%%~nxF"
    )
  )
)
popd

рекурсивно переименовать все файлы в папках ребенка

@echo off
pushd "Folder"
for /d %%D in (*) do (
  pushd "%%D"
  for /r %%F in (*) do (
    for %%P in ("%%F\..") do (
      ren "%%F" "%%~nxP_%%~nxF"
    )
  )
  popd
)
popd

убедитесь, что вы запускаете любой скрипт только один раз! Вы не хотите ставить несколько префиксов перед файлами: -)

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

2
отвечен dbenham 2023-01-20 13:38

Если вы хотите переименовать файлы в папке только это решение.

for %%f in (.) do set "A=%%~dpnxf\"
for /r "%A%" %%f in (.) do call :func "%%~f"
goto :EOF
:func
set "B=%~1"
for %%g in ("%B%") do set "C=%%~dpnxg"
for %%g in ("%C%") do set "D=%%~nxg"
cd  %C%
set "k=%C%\"
if NOT %A%==%k% FOR %%v IN (*.*) DO REN "%%v" "%D%_%%v" 
goto :EOF
1
отвечен shekhar 2023-01-20 15:55

Вы можете сделать это легко с помощью Windows Powershell. Это двухстрочный скрипт, чтобы переименовать все файлы в подпапках путь имя файла имя папку префикса. Рассмотрим эту простую структуру на диске D:

D:\folder1\Sub1

         Sub1 - AAAA.txt
          Sub1 - BBBB.txt
           Sub1 - CCC.txt

D:\folder1\Sub2

          0 AAAAA.txt
          0 CCCC.txt

вот скрипт:

ПС C:\Users\User> компакт-диск D:\folder1

ПС D:\folder1> получить-childitem -рекурсия | переименовать-товар -Новое_имя {$.Каталог.Имя + " - "+ $.Имя}

при запуске скрипта все файлы будут переименованы с префикса имени каталога.

1
отвечен Richard 2023-01-20 18:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

batch
batch-rename
command-line
rename
windows
Вверх