如何使用dos命令找到文件夹的目标而不使用其完整路径?

时间:2013-03-08 11:56:23

标签: windows vbscript cmd

如何在没有完整路径的情况下找到文件夹的目的地? 我想将文件夹中的文件集复制到另一个文件夹。但是我没有目标文件夹的完整路径,说C:\temp\folder A是来源 目的地的路径为D:\temp\folder X\folder A

我不知道"folder x"的名称,但我希望"folder A"中所有来源C:\ drive的文件都被复制到"folder A"中的"D:\ drive"。我想用DOS命令来做。

3 个答案:

答案 0 :(得分:0)

如果您知道驱动器号,但不知道确切的文件夹。你可以从驱动器的顶层做一个目录,然后找一个find,它应该返回你想要的文件夹。

Dir / AD / s d:*文件夹A * / S

您应该能够使用for循环来解析输出。唯一的困难是如果驱动器D上有多个名为“文件夹A”的文件夹。这可能是@“Class Stacker”所指的,你需要假设它是唯一的。

答案 1 :(得分:0)

尝试这样的事情:

Set fso = CreateObject("Scripting.FileSystemObject")

WScript.Echo FindFolder(fso.GetFolder("C:\temp"), "folder A")

Function FindFolder(parent, name)
  For Each sf In parent.SubFolders
    If LCase(sf.Name) = LCase(name) Then
      path = sf.Path
    Else
      path = FindFolder(sf, name)
    End If
    If Not IsEmpty(path) Then Exit For
  Next
  FindFolder = path
End Function

答案 2 :(得分:0)

您不需要这样的程序,可以通过单个命令完成,如果在批处理文件中使用,则将%替换为%%。如果你想知道:“delims ==”会破坏两个字符串中“文件夹A”的分解,我告诉解释器这里使用= as分隔符,这是不存在的,所以我得到整个sttring呈现目标路径。

for /F "delims==" %a in ('Dir /AD /s /b d:\^|find "Folder A"') do copy "c:\temp\folder A" %a