Добавить имя файла с именем папки и заменить `-` и удалить пробелы - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть папка, которая содержит

P:\RECORDINGS\2020-04-08 14-09-07 - VIDS - -\VIDS - -.mp4
P:\RECORDINGS\2020-04-08 14-09-07 - VIDS - -\VIDS - -.json
P:\RECORDINGS\2020-04-08 14-09-07 - VIDS - -\VIDS - -.aaf

Я хочу, чтобы файлы были переименованы в соответствии с папкой, в которой они находятся.

P:\RECORDINGS\2020-04-08 14-09-07 - VIDS - -\2020-04-08 14-09-07-VIDS.mp4
P:\RECORDINGS\2020-04-08 14-09-07 - VIDS - -\2020-04-08 14-09-07-VIDS.json
P:\RECORDINGS\2020-04-08 14-09-07 - VIDS - -\2020-04-08 14-09-07-VIDS.aaf

Я получаю следующее

P:\RECORDINGS\2020-04-08 16-01-12 - TEST - ->(
Echo Ren: ".\2020-04-08 16-01-12 - TEST - -\TEST - -.m4a" "2020-04-08 16-01-12 - TEST - -.m4a"
 Ren "TEST - -.m4a" "2020-04-08 16-01-12 - TEST - -.m4a"

У меня есть этот код, однако он, кажется, не добавляет имя, тем более заменяет его.

@echo on
Setlocal enabledelayedexpansion

FOR /D /R %%# in (*) DO (
    PUSHD "%%#"
    FOR %%@ in ("*") DO (
        Echo Ren: ".\%%~n#\%%@" "%%~n#%%~x@"
        Ren "%%@" "%%~n#%%~x@"
    )
    POPD
)

Код выше: нажмите здесь (шкаф, который я мог найти)

Обновление

@echo off Setlocal enabledelayedexpansion rem - keeps the first 19 chas of the folder names for /F "delims=" %%D in ('dir /B /A:D "*"') do ( set "FOLDER=%%D" setlocal EnableDelayedExpansion ren "!FOLDER!" "!FOLDER:~,19!" endlocal ) for /r %%a in (*.*) do for %%b in ("%%~dpa\.") do echo ren "%%~a" "%%~nxb____%%~xa"

Хорошо. Итак, я очистил папки сейчас. "%%~nxb____%%~xa" Мне нужно указать здесь имя файла, однако я не уверен, как получить информацию. Я смотрю на %%f. Однако я не уверен, как добавить его в приведенный выше код. Не я немного растерялся.

1 Ответ

0 голосов
/ 08 апреля 2020

Решение:

rem - Rename files based on folder name
for /d %%D in (*) do (
  pushd "%%D"
  for /r %%F in (*) do (
    for %%P in ("%%F\..") do (
      ren "%%F" "%%~nxP_%%~nxF"

    )
  )
  popd
)
popd
...