批量重命名程序

批量重命名程序

我有一个名为 的主目录KARAOKI,其中有艺术家的文件夹,这些文件夹中包含他们的所有歌曲。我需要在该文件夹中的每首歌曲前面插入文件夹名称,以便将其加载到卡拉 OK 主文件中

例如,以下文件名需要如下所示 Elvis Presley - Are You Lonesome Tonight::

  • 文件夹名称:Elvis Presley
    标题名称:Are You Lonesome Tonight

答案1

电源外壳:

$Root = 'C:\KARAOKI'
$Songs = Get-ChildItem $Root -File -Recurse
$Songs | Rename-Item -NewName {'{0} - {1}' -f $_.Directory.Name, $_.Name}

获取子项 重命名项目 -f 格式运算符

答案2

@echo off && setlocal enabledelayedexpansion

cd /d "%~dp0" && for /f tokens^=* %%i in ('dir /s /b /a:d')do for /f tokens^=* %%I in ('
dir /a:-d /b "%%~i"')do if not "%%~nxI" == "%~nx0" ren "%%~dpni\%%~nxI" "%%~ni - %%~nxI"

endlocal & goto :EOF

1)尝试使用delayed expansion对于您的变量:

setlocal enabledelayedexpansion

2)转到 bat(我认为)将运行/工作的文件夹 == 主驱动器:\Master-Folder:

cd /d "%~dp0"

3)用一个for循环仅在所有子文件夹中递归运行,文件夹 ==%%~i

for /f tokens^=* %%i in ('dir /s /b /a:d')do...

4)使用第二个for在当前文件夹中(%%~i) 获取/列出任何文件(%%~I) 在当前文件夹中:

for /f tokens^=* %%i in ('dir /s /b /a:d')do for /f tokens^=* %%I in ('
dir /a:-d /b "%%~i"')do...

5)使用扩展变量%%~nxi%%~ni%~nx0%%~dpni\%%~nxI%%~xi,根据布局名称需要:

%~nx0   ==    Name + Extension file.bat %0         ==    Q1537358.cmd

%%~ni   ==    Name Folder in loop %%i              ==    Are You Lonesome Tonight.ext

%%~nxI  ==    Name + Extension file in loop %%I    ==    Elvis Presley

%%~dpni ==    Drive + Path Name file in loop %%i   ==    D:\KARAOKI

%%~nxI  ==    Name Folder in loop %%I              ==    KARAOKI

6)使用if在尝试重命名任何文件之前,先比较当前的名称\扩展名文件是否与当前的 bat/cmd 文件相同:

if not "%%~nxI" == "%~nx0"

7)使用if在尝试重命名任何文件之前,先比较当前的名称\扩展名文件是否与当前的 bat/cmd 文件相同:

8)在循环变量扩展中用此布局名称重命名您的文件:

ren "%%~dpni\%%~nxI" "%%~ni - %%~nxI"
ren "D:\KARAOKI\Elvis Presley\Are You Lonesome Tonight.ext" "Elvis Presley - Are You Lonesome Tonight.ext" 

观察:假设您将保存此 bat 文件并在同一个Drive:\Folder您的主目录\KARAOKI是/是...

C:\KARAOKI or D:\KARAOKI or E:\KARAOKI...

对于命令行帮助,您可以使用/?

Ren /?, For /?,CD /?, Setlocal /?, Endlocal /?, Goto /?, Setlocal /?, Endlocal /?, if /?

在互联网上,您可以获得更多有关以下方面的帮助:

很抱歉我的英语水平有限

答案3

对于简单的重命名(如果它仅取决于文件的名称,也许还有一些数字/字母序列),我使用一款简单但很好用的免费软件“Lupas Rename 2000”。由于这还需要导航到父文件夹才能获取名称,所以我不确定它是否适用于您的情况。无论如何,您可以在这里找到它:http://rename.lupasfreeware.org/download.php

对于您的问题,我猜您需要更复杂的工具。如果您可以使用 PowerShell,Keith Miller 的工具似乎非常简洁有效。

相关内容