批量重命名子文件夹中的特定文件,使用父文件夹名称+扩展名

批量重命名子文件夹中的特定文件,使用父文件夹名称+扩展名

我对 Dos 还不是很了解,我正在尝试编写一个脚本(是的)

我想要做的是:

  • 取批处理所在文件夹的名称(例如:.\Project_Apple*.bat)
  • 使用第一个文件的名称重命名子文件夹中的文件
    (例如:\Project_Apple\OUTPUT\template.txt> \Project_Apple\OUTPUT\Project_Apple.txt

对于重命名和定位,我没有问题。我使用 CD 和 REN。我读到 FOR 命令可以做到这一点,并阅读了有关它的文档,但我不知道如何让它“记住”文件夹名称。

有办法吗?

编辑:

我迈出了一大步。我使用以下方法成功将文件夹和文件重命名为文件夹名称:

for %%i in (%cd%) do set CurrDirName=%%~nxi
rename test.txt %CurrDirName%

现在,我正尝试定位子文件夹中的文件。

答案1

我已经通过这个实现了我想要做的事情。

for %%i in (%cd%) do set CurrDirName=%%~nxi
cd %CurrDir%\OUTPUT\
rename template.txt %CurrDirName%.txt

答案2

不要使用%CD%这个,它不一定是批次所在的文件夹。

  • 如果使用绝对或相对路径调用批处理,则不会改变当前文件夹。
  • 要引用当前正在运行的批处理文件的完整路径,请使用%~f0
  • 使用从中提取文件夹为了~ 修饰符

:: Q:\Test\2019\01\24\SU_1397868.cmd
@Echo off
Echo This batch file full path: %~f0
Echo This batch file drive    : %~d0
Echo This batch file path     : %~p0
Echo This batch file name     : %~n0

for %%A in (%0\..) Do Set folder=%%~nxA

Echo This batch file folder   : %folder%

If exist "%~dp0Output\template.txt" (
    Ren  "%~dp0Output\template.txt" "%folder%.txt"
)

我的 RAM 驱动器 A 上的示例输出:

> SU_1397868.cmd
This batch file full path: A:\Project_Apple\SU_1397868.cmd
This batch file drive    : A:
This batch file path     : \Project_Apple\
This batch file name     : SU_1397868
This batch file folder   : Project_Apple

> tree /F A:\
A:\
└───Project_Apple
    │   SU_1397868.cmd
    └───OUTPUT
            Project_Apple.txt

相关内容