首页 > 解决方案 > 将文件名附加到文件夹名称并替换 `-` 并删除空格

问题描述

我有一个文件夹,其中包含

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。但是,我不确定如何在上面的代码中添加它。不是我有点失落。

标签: batch-filecmd

解决方案


解决方案:

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

推荐阅读