可以使用脚本重命名文件夹中的所有文件吗?

来源:百度文库 编辑:神马文学网 时间:2024/04/27 16:29:01

可以使用脚本重命名文件夹中的所有文件吗?

问:

嗨,Scripting Guy!可以使用脚本重命名一个目录中的所有文件并在原文件名上添加“pl-”前缀吗?

-- JP

答:

嗨,JP。了解有多少人需要做类似的事情很有趣:他们需要通过添加日期,更改文件扩展名,或者——如本例中——在每个文件名的开头打上“pl-”前缀,重命名给定文件夹中的所有文件。永远都不要说 Script Guys 不倾听 Microsoft 客户的心声。(不是这样的,我们就是不想人有说这句话!)这里有一个脚本可以实现您想完成的事情:

strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colFileList = objWMIService.ExecQuery _("ASSOCIATORS OF {Win32_Directory.Name=‘C:\Logs‘} Where " _& "ResultClass = CIM_DataFile")For Each objFile In colFileListstrNewName = objFile.Drive & objFile.Path & "pl-" & _objFile.FileName & "." & objFile.ExtensionerrResult = objFile.Rename(strNewName)Next

如果您打算根据自己的需求来修改这个脚本,那么需要记住两个要点。首先,请注意我们使用了 Associators Of 查询以便返回在某个文件夹(此处为 C:\Logs 文件夹)中找到的所有文件的集合:

Set colFileList = objWMIService.ExecQuery _("ASSOCIATORS OF {Win32_Directory.Name=‘C:\Logs‘} Where " _& "ResultClass = CIM_DataFile")

Associators Of 查询的确名副其实:它使您可以关联两个 WMI 类别。此处,我们将 Win32_Directory(让我们管理文件夹的类别)与 CIM_DataFile(让我们管理文件的类别)相关联。您可能会想到 Win32_Directory 类别有一个名为“Files”的属性(可列出在文件夹中找到的所有文件)。但是出于某种原因,并没有该属性。必须使用 Associators Of 查询来获得相同的效果。

正如您可能希望的那样,有关 Associators Of 的全面讨论永远都不会出现在这个小专栏中。如需更多信息,请参见WMI SDK. 目前,只要照搬代码就行了,并且——如果需要的话——将 C:\Logs 更改为适当的文件夹。

需要记住的另一点是:使用 WMI 重命名文件时,必须将整个文件路径传递给 Rename 方法。假设您要将文件 C:\Logs\File_1.txt 重命名为 C:\Logs\Pl-File_1.txt。这行代码办不到这一点:

errResult = objFile.Rename("Pl-File_1.txt")

必须使用行代码:

errResult = objFile.Rename("C:\Logs\Pl-File_1.txt")

这就是 Rename 方法之前的代码为何看起来如此复杂的原因:必须为新的文件名构建整个路径,将其指派给 strNewName 变量,然后将 strNewName 传递给 Rename 方法。该代码可分为:

objFile.Drive

对所要重命名的文件返回驱动器号(这里为 C:\)。

objFile.Path

不要让这个名称误导了您:Path 属性仅返回文件夹的路径(驱动器和文件名除外)。例如,如果连接到文件 C:\Logs\File1_txt,那么 Path 属性将返回 Logs\。如果连接到了 C:\Scripts\Logs\Admin Logs\File_1.txt,那么 Path 将为 Scripts\Logs\Admin Logs\。

"pl-"

要附加到每个文件名前头的前缀。

objFile.FileName

文件的当前名称,不含文件扩展名(这里为 File_1)。

"."

文件名和文件扩展名间的英文句号。Extension 属性(见下方)仅返回文件扩展名(比如:txt)中所含的字符;当不返回英文句号。

objFile.Extension

文件的扩展名。假设我们要将所有这些文件的 .txt 扩展名更改为 .log 扩展名。这时,不需要使用现有的文件扩展名,而将 .log 附加到文件名的末尾。

换而言之:

objFile.Drive

C:\

objFile.PathLogs\

"pl-"

pl-

objFile.FileName

File_1

"."

.

objFile.Extension

txt

将它们连在一块——C:\ + Logs\ + pl- + File_1 + .+ txt——就将得到新的文件名。