我有以下脚本,如果我需要重命名文件夹中的文件,但是现在我想将文件夹从一个映射驱动器移动并重命名为另一个映射驱动器。有人可以帮我修改脚本吗?如果我不能解决这个问题,那么我对VB不熟悉是如此的原谅但是我花了一点时间来解决这个问题,现在我不知道如何修改这个脚本。先感谢您!
默认情况下,文件夹标记为A.1234,A.5678,依此类推,并且始终为其分配不同的编号。我将保留标签中的数字,因为它们是采购订单编号。所以我最终的结果是Ack~1234,Ack~5678,等等。
Dim fso, f, f1, fc, s Set
fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("Y:\Test")
Set fc = f.Files
For Each f1 in fc
f1.move f1.ParentFolder & "\" & replace(f1.Name, "A.", "Ack~")
同样,这些文件夹存在于映射驱动器的根目录中,需要使用新名称移动到另一个映射驱动器。如果需要更多信息,请不要犹豫。
更新
我修改了下面的脚本,以便了解我的目标。
Dim fso, objFol
Set fso = CreateObject("Scripting.FileSystemObject")
Set objFol = fso.GetFolder("Z:\")
Set objFolders = objFol.Folders
For each folder in objFolders
fso.Movefolder folder, "Y:\" & Replace(fso.Name, "A.", "Ack~")
Next
这给我一个错误,声明它不支持“文件夹”。 Z驱动器中将有任意数量的文件夹,我需要将它们全部移动到Y驱动器。对不起,如果我在上一篇文章中没有正确解释。
答案 0 :(得分:1)
move命令是一个字符串,您要为其提供文件的父文件夹,因此文件不会移动。我认为提供不同的文件夹位置就足够了。例如:
Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("Y:\Test")
Set fc = f.Files
For Each f1 in fc
f1.move "Z:\TargetFolder\" & replace(f1.Name, "A.", "Ack~")
注意:我没有对此进行测试,但如果有问题,请询问
更新后的其他内容:
以下代码将允许您移动文件夹,并对文件夹名称字符串执行所需的替换。
Dim fso, objFol, objMoveFol, strPathBuild
Set fso = CreateObject("Scripting.FileSystemObject")
Set objFol = fso.GetFolder("Y:\Test")
For Each objMoveFol In objFol.SubFolders
'Replace the root folder locations in the path
strPathBuild = Replace(objMoveFol, "Y:\Test", "Z:\TargetFolder\")
'Do the required other fiddle
strPathBuild = Replace(strPathBuild, "A.", "Ack~")
fso.Movefolder objMoveFol, strPathBuild
Next
确保你对这类事情非常小心,因为错误可能相当壮观。