批处理脚本,根据父文件夹名称重命名文件名

时间:2015-03-10 10:55:29

标签: batch-file for-loop replace filenames rename

我将自动生成的内容发布到随机语言文件夹。每个文件夹包含一个.jpg文件。

.jpg文件的名称总是类似于file_1_EN.jpg或file_2_EN.jpg。

我想要做的是将文件名中的_EN替换为基于文件发布的文件夹名称的特定文本。

所以,例如,当我将我的内容发布到.. \ German \我希望_EN被_DE替换,但是当我将我的内容发布到.. \ French时我希望_EN被_FR替换。

我环顾四周,但无法就这个具体问题找到答案。

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

我建议您将VBScript用于此任务而不是批处理文件,这是执行此任务的代码。

代码的一部分是一个函数,它将返回文件夹名称的缩写,我包含你在问题中发布的例子,你需要在函数中添加你的其他文件夹名称&每个文件夹名称的返回缩写。

c:\NameOfDirOfAllFolders替换为所有这些文件夹所在目录的实际路径。

Dim FSO, FS, Fldr, Fl, Abbrev
Set FSO = CreateObject("scripting.FileSystemObject")
Set FS = FSO.GetFolder("c:\NameOfDirOfAllFolders").SubFolders
For Each Fldr In FS
    Abbrev = GetAbbrev(Fldr.Name)
    For Each Fl In Fldr.Files
        Fl.Name = Replace(Fl.Name, "_EN", "_" & Abbrev)
    Next
Next

Function GetAbbrev(FolderName)
    Select Case FolderName
        Case "English"
            GetAbbrev = "EN"
        Case "German"
            GetAbbrev = "DE"
        Case "French"
            GetAbbrev = "FR"
        Case Else
            GetAbbrev = "UNKNOWN"
    End Select
End Function