Vbscript 使用VB重命名和移动文件夹

Vbscript 使用VB重命名和移动文件夹,vbscript,Vbscript,我有下面的脚本,如果我需要重命名文件夹中的文件,它非常有效,但现在我想将文件夹从一个映射驱动器移动到另一个映射驱动器并重命名。有人能帮我修改脚本吗?我是VB新手,所以请原谅,如果我不能解决这个问题,但我花了一点时间来解决这个问题,现在我不知道如何修改这个脚本。提前谢谢你 默认情况下,文件夹标记为A.1234、A.5678等,并且始终为其分配不同的编号。我将保留标签上的编号,因为它们是PO编号。所以我想要的最终结果是Ack~1234、Ack~5678,依此类推 Dim fso, f, f1, fc

我有下面的脚本,如果我需要重命名文件夹中的文件,它非常有效,但现在我想将文件夹从一个映射驱动器移动到另一个映射驱动器并重命名。有人能帮我修改脚本吗?我是VB新手,所以请原谅,如果我不能解决这个问题,但我花了一点时间来解决这个问题,现在我不知道如何修改这个脚本。提前谢谢你

默认情况下,文件夹标记为A.1234、A.5678等,并且始终为其分配不同的编号。我将保留标签上的编号,因为它们是PO编号。所以我想要的最终结果是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驱动器。如果我在上一篇文章中没有正确解释,很抱歉。

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

请确保您在处理这类事情时非常小心,因为出错可能会非常严重。

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

确保您对这类事情非常小心,因为出错可能会非常壮观。

看起来这既不是vb.net,也不是VBA,也不是vb,而是VBScript。如果我是对的,请更改您的标记。可能是VBA或VB,但没有显式选项(由于某些原因,我永远无法理解该选项是默认关闭的)。已删除vb.net标记。看起来这既不是vb.net,也不是VBA,也不是vb,而是VBScript。如果我是对的,请更改您的标记。可能是VBA或VB,但没有显式选项(由于某些原因,我永远无法理解该选项是默认关闭的)。已经删除了vb.net tagJon,您不知道我有多感激您的回复!我修改了下面的脚本,让大家知道我想做什么。dim fso,objFol set fso=CreateObject(“Scripting.FileSystemObject”)set objFol=fso.GetFolder(“Z:\”)set objFolders=objFol.Folders对于objFolders fso.Movefolder文件夹中的每个文件夹,“Y:\”和Replace(fso.Name,“A.”,“Ack~”)下一步这会给我一个错误,说明它不支持“folder”。Z驱动器中将有任意数量的文件夹,我需要将它们全部移动到Y驱动器。对不起,如果我在上一篇文章中没有正确解释。乔恩,我想再次感谢你的反馈。这很有魅力。它甚至可以移动文件夹中包含的文件!我在本地测试了脚本,一切正常。我试图在映射的驱动器上执行此操作,但由于权限问题而失败。我将与服务器管理员讨论这个问题,并尽快解决该问题。我真的很感谢你在这方面的帮助!谢谢没问题。如果你喜欢,那么在我的答案上打勾,我会得到额外的分数(你也一样!)Jon,我在运行脚本时遇到了一个“权限被拒绝”的错误。我正在尝试将文件夹移动到从运行该进程的计算机映射的服务器。我是否需要插入带有凭据的脚本以确保访问?请提前告知并感谢!乔恩,你不知道我多么感激你的回答!我修改了下面的脚本,让大家知道我想做什么。dim fso,objFol set fso=CreateObject(“Scripting.FileSystemObject”)set objFol=fso.GetFolder(“Z:\”)set objFolders=objFol.Folders对于objFolders fso.Movefolder文件夹中的每个文件夹,“Y:\”和Replace(fso.Name,“A.”,“Ack~”)下一步这会给我一个错误,说明它不支持“folder”。Z驱动器中将有任意数量的文件夹,我需要将它们全部移动到Y驱动器。对不起,如果我在上一篇文章中没有正确解释。乔恩,我想再次感谢你的反馈。这很有魅力。它甚至可以移动文件夹中包含的文件!我在本地测试了脚本,一切正常。我试图在映射的驱动器上执行此操作,但由于权限问题而失败。我将与服务器管理员讨论这个问题,并尽快解决该问题。我真的很感谢你在这方面的帮助!谢谢没问题。如果你喜欢,那么在我的答案上打勾,我会得到额外的分数(你也一样!)Jon,我在运行脚本时遇到了一个“权限被拒绝”的错误。我正在尝试将文件夹移动到从运行该进程的计算机映射的服务器。我是否需要插入带有凭据的脚本以确保访问?请提前告知并感谢!