Batch file 如何检查if exist中是否存在带有通配符的目录,并将此文件夹复制到其他位置?

Batch file 如何检查if exist中是否存在带有通配符的目录,并将此文件夹复制到其他位置?,batch-file,directory,exists,xcopy,dirname,Batch File,Directory,Exists,Xcopy,Dirname,我正试图编写一个bat脚本,以便更好地组织我客户的文件。 我已经创建了两个文件夹。 第一个名为“文件夹”,包含每个客户端的文件夹及其文件。每个客户机的文件夹名称都具有结构名称\u姓氏\u uniqueclientid。 第二个名为“Raw”,包含原始客户端文件和文件夹,但每个文件夹或文件的名称中都包含唯一的客户端id。 我的目标是从每个“文件夹”文件夹中提取每个id,并检查“原始”文件夹中是否有包含此id的文件或文件夹。如果有,应将其复制到具有相同id的相应“文件夹”文件夹中。 我的问题是我无法

我正试图编写一个bat脚本,以便更好地组织我客户的文件。 我已经创建了两个文件夹。 第一个名为“文件夹”,包含每个客户端的文件夹及其文件。每个客户机的文件夹名称都具有结构名称\u姓氏\u uniqueclientid。 第二个名为“Raw”,包含原始客户端文件和文件夹,但每个文件夹或文件的名称中都包含唯一的客户端id。 我的目标是从每个“文件夹”文件夹中提取每个id,并检查“原始”文件夹中是否有包含此id的文件或文件夹。如果有,应将其复制到具有相同id的相应“文件夹”文件夹中。
我的问题是我无法检查包含id的文件夹并将其移动到相应的“文件夹”文件夹

我已设法从文件夹名称中提取id,检查“原始”文件夹中包含此id的文件,并xcopy将其复制到相应的“文件夹”文件夹中。据我所知,脚本没有进入最后一个if。它应该找到包含id的文件夹,如果有,将它们复制到相应的“文件夹”文件夹

下面这部分不起作用:

        if exist Raw\*%%t*\ (
            xcopy "Raw\*%%t*\*" "%%a" /s /i
            echo ok
            )
        )
    )
    pause   
    goto :eof
初始文件夹树

C:\DATA
├───folders
│   ├───FirstName_Lastname_10123
│   │   |
│   │   │   kjhda10123.rtf
│   │   │   dadsada10123lhlhfds.txt
│   │   │
│   │   └───kjhfdsfs10123f
│   ├───FirstName_Lastname_10124
│   │   │   jgkjgjfs10124kjlda.rtf
│   │   │   klhlidkas10124klhdas.txt
│   │   │
│   │   └───lkhjlkhdsakda10124
│   └───FirstName_Lastname_10125
│       │   kjhkdsa10125.rtf
│       │   10125dakjh.txt
│       │
│       └───10125
|           |   kjhkjda.txt
|           |   hkda.pdf  
└───Raw
    |   dsakhkhda10123.txt
    |   kgjddjasg10125.pdf
    |   kkkkdajh10123khda.docx
    |   10124dsadas
    |   
    └───vcb10125
之后

C:\DATA
├───folders
│   ├───FirstName_Lastname_10123
│   │   |   kkkkdajh10123khda.docx
│   │   │   kjhda10123.rtf
│   │   │   dadsada10123lhlhfds.txt
|   |   |   dsakhkhda10123.txt
│   │   │
│   │   └───kjhfdsfs10123f
│   ├───FirstName_Lastname_10124
│   │   │   jgkjgjfs10124kjlda.rtf
│   │   │   klhlidkas10124klhdas.txt
│   │   │   10124dsadas
│   │   └───lkhjlkhdsakda10124
│   └───FirstName_Lastname_10125
│       │   kjhkdsa10125.rtf
│       │   10125dakjh.txt
│       │   kgjddjasg10125.pdf
|       |   vcb10125
│       └───10125
|           |   kjhkjda.txt
|           |   hkda.pdf  
└───Raw
    |   
    |   
    |   
    |   
    |   
    └───

如果文件夹已存在,请合并问题?(我知道这会被否决,但我想帮助OP并尝试清楚地理解问题)

C:\DATA
├───folders
│   ├───FirstName_Lastname_10123
│   │   |
│   │   │   kjhda10123.rtf
│   │   │   dadsada10123lhlhfds.txt
│   │   │
│   │   └───kjhfdsfs10123f
│   ├───FirstName_Lastname_10124
│   │   │   jgkjgjfs10124kjlda.rtf
│   │   │   klhlidkas10124klhdas.txt
│   │   │
│   │   └───lkhjlkhdsakda10124
│   └───FirstName_Lastname_10125
│       │   kjhkdsa10125.rtf
│       │   10125dakjh.txt
│       │
│       └───10125
|           |   kjhkjda.txt
|           |   hkda.pdf  
└───Raw
    |   dsakhkhda10123.txt
    |   kgjddjasg10125.pdf
    |   kkkkdajh10123khda.docx
    |   10124dsadas
    |   
    └───vcb10125
  • 为了弄清楚这一点,您有两个主目录
    文件夹
    原始文件
    正确吗

  • 文件夹中
    包含您的
    name\u name\u uniqueclientid
    格式正确吗

  • Raw
    中,您有“Raw客户端文件和文件夹”,但每个文件和文件夹的名称格式为
    name\u姓氏\u uniqueclientid
    正确吗

  • 猜测文件夹的实际名称在示例
    \u 10123\u taxing.rtf
    中的
    \u uniqueclientid
    之后

  • 文件夹树?

    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   ├───FirstName_Lastname_10124
    │   └───FirstName_Lastname_10125
    └───Raw
        │   FirstName_Lastname_10123_taxing.rtf
        │   FirstName_Lastname_10123_text.txt
        │   FirstName_Lastname_10124_data.rtf
        │   FirstName_Lastname_10124_text.txt
        │   FirstName_Lastname_10125.rtf
        │   FirstName_Lastname_10125_text.txt
        │
        ├───FirstName_Lastname_10123_taxing
        ├───FirstName_Lastname_10124_numbers
        └───FirstName_Lastname_10125_names
    
    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   │   │   FirstName_Lastname_10123_taxing.rtf
    │   │   │   FirstName_Lastname_10123_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10123_taxing
    │   ├───FirstName_Lastname_10124
    │   │   │   FirstName_Lastname_10124_data.rtf
    │   │   │   FirstName_Lastname_10124_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10124_numbers
    │   └───FirstName_Lastname_10125
    │       │   FirstName_Lastname_10125.rtf
    │       │   FirstName_Lastname_10125_text.txt
    │       │
    │       └───FirstName_Lastname_10125_names
    └───Raw
    
    目标?

    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   ├───FirstName_Lastname_10124
    │   └───FirstName_Lastname_10125
    └───Raw
        │   FirstName_Lastname_10123_taxing.rtf
        │   FirstName_Lastname_10123_text.txt
        │   FirstName_Lastname_10124_data.rtf
        │   FirstName_Lastname_10124_text.txt
        │   FirstName_Lastname_10125.rtf
        │   FirstName_Lastname_10125_text.txt
        │
        ├───FirstName_Lastname_10123_taxing
        ├───FirstName_Lastname_10124_numbers
        └───FirstName_Lastname_10125_names
    
    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   │   │   FirstName_Lastname_10123_taxing.rtf
    │   │   │   FirstName_Lastname_10123_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10123_taxing
    │   ├───FirstName_Lastname_10124
    │   │   │   FirstName_Lastname_10124_data.rtf
    │   │   │   FirstName_Lastname_10124_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10124_numbers
    │   └───FirstName_Lastname_10125
    │       │   FirstName_Lastname_10125.rtf
    │       │   FirstName_Lastname_10125_text.txt
    │       │
    │       └───FirstName_Lastname_10125_names
    └───Raw
    
    因此,如果
    Raw
    文件夹中的任何文件包含
    uniqueclientid
    ,您希望将它们复制到
    文件夹中包含的
    名称\u姓氏\u uniqueclientid

    新树?

    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   ├───FirstName_Lastname_10124
    │   └───FirstName_Lastname_10125
    └───Raw
        │   FirstName_Lastname_10123_taxing.rtf
        │   FirstName_Lastname_10123_text.txt
        │   FirstName_Lastname_10124_data.rtf
        │   FirstName_Lastname_10124_text.txt
        │   FirstName_Lastname_10125.rtf
        │   FirstName_Lastname_10125_text.txt
        │
        ├───FirstName_Lastname_10123_taxing
        ├───FirstName_Lastname_10124_numbers
        └───FirstName_Lastname_10125_names
    
    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   │   │   FirstName_Lastname_10123_taxing.rtf
    │   │   │   FirstName_Lastname_10123_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10123_taxing
    │   ├───FirstName_Lastname_10124
    │   │   │   FirstName_Lastname_10124_data.rtf
    │   │   │   FirstName_Lastname_10124_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10124_numbers
    │   └───FirstName_Lastname_10125
    │       │   FirstName_Lastname_10125.rtf
    │       │   FirstName_Lastname_10125_text.txt
    │       │
    │       └───FirstName_Lastname_10125_names
    └───Raw
    

    编辑:(工作解决方案)

    如果这确实是你的问题,那么这就是你问题的有效解决方案。请注意,所有函数、代码块和进程都有一个
    Rem
    ,在代码中一步一步地解释它

    因此,使用代码的基,我们可以获取
    uniqueclientid
    ,然后将其设置为一个名为
    FolderIDNumber
    的字符串。此字符串将在
    find
    中使用,以仅显示
    dir
    循环中的有效文件夹

    随着主
    文件夹
    name\u names\u uniqueclientid文件夹在一个循环中使用,我们可以自由地处理
    Raw
    中的文件以进行移动。这很容易,因为我们现在有了
    dir
    的所有数据。我们有两个
    dir
    循环的原因是一个只抓取文件夹,另一个只抓取文件。这样,我们就可以将它们正确地
    复制到指定的name\u names\u uniqueclientid文件夹中


    有关任何命令的帮助,请执行以下操作:

    • 呼叫/?
    • 设置/?
    • 获取/?
    • 如果/?
    • 查找/?
    • 等等

    问题?(我知道这会被否决,但我想帮助OP并尝试清楚地理解这个问题)

  • 为了弄清楚这一点,您有两个主目录
    文件夹
    原始文件
    正确吗

  • 文件夹中
    包含您的
    name\u name\u uniqueclientid
    格式正确吗

  • Raw
    中,您有“Raw客户端文件和文件夹”,但每个文件和文件夹的名称格式为
    name\u姓氏\u uniqueclientid
    正确吗

  • 猜测文件夹的实际名称在示例
    \u 10123\u taxing.rtf
    中的
    \u uniqueclientid
    之后

  • 文件夹树?

    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   ├───FirstName_Lastname_10124
    │   └───FirstName_Lastname_10125
    └───Raw
        │   FirstName_Lastname_10123_taxing.rtf
        │   FirstName_Lastname_10123_text.txt
        │   FirstName_Lastname_10124_data.rtf
        │   FirstName_Lastname_10124_text.txt
        │   FirstName_Lastname_10125.rtf
        │   FirstName_Lastname_10125_text.txt
        │
        ├───FirstName_Lastname_10123_taxing
        ├───FirstName_Lastname_10124_numbers
        └───FirstName_Lastname_10125_names
    
    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   │   │   FirstName_Lastname_10123_taxing.rtf
    │   │   │   FirstName_Lastname_10123_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10123_taxing
    │   ├───FirstName_Lastname_10124
    │   │   │   FirstName_Lastname_10124_data.rtf
    │   │   │   FirstName_Lastname_10124_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10124_numbers
    │   └───FirstName_Lastname_10125
    │       │   FirstName_Lastname_10125.rtf
    │       │   FirstName_Lastname_10125_text.txt
    │       │
    │       └───FirstName_Lastname_10125_names
    └───Raw
    
    目标?

    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   ├───FirstName_Lastname_10124
    │   └───FirstName_Lastname_10125
    └───Raw
        │   FirstName_Lastname_10123_taxing.rtf
        │   FirstName_Lastname_10123_text.txt
        │   FirstName_Lastname_10124_data.rtf
        │   FirstName_Lastname_10124_text.txt
        │   FirstName_Lastname_10125.rtf
        │   FirstName_Lastname_10125_text.txt
        │
        ├───FirstName_Lastname_10123_taxing
        ├───FirstName_Lastname_10124_numbers
        └───FirstName_Lastname_10125_names
    
    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   │   │   FirstName_Lastname_10123_taxing.rtf
    │   │   │   FirstName_Lastname_10123_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10123_taxing
    │   ├───FirstName_Lastname_10124
    │   │   │   FirstName_Lastname_10124_data.rtf
    │   │   │   FirstName_Lastname_10124_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10124_numbers
    │   └───FirstName_Lastname_10125
    │       │   FirstName_Lastname_10125.rtf
    │       │   FirstName_Lastname_10125_text.txt
    │       │
    │       └───FirstName_Lastname_10125_names
    └───Raw
    
    因此,如果
    Raw
    文件夹中的任何文件包含
    uniqueclientid
    ,您希望将它们复制到
    文件夹中包含的
    名称\u姓氏\u uniqueclientid

    新树?

    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   ├───FirstName_Lastname_10124
    │   └───FirstName_Lastname_10125
    └───Raw
        │   FirstName_Lastname_10123_taxing.rtf
        │   FirstName_Lastname_10123_text.txt
        │   FirstName_Lastname_10124_data.rtf
        │   FirstName_Lastname_10124_text.txt
        │   FirstName_Lastname_10125.rtf
        │   FirstName_Lastname_10125_text.txt
        │
        ├───FirstName_Lastname_10123_taxing
        ├───FirstName_Lastname_10124_numbers
        └───FirstName_Lastname_10125_names
    
    C:\DATA
    ├───folders
    │   ├───FirstName_Lastname_10123
    │   │   │   FirstName_Lastname_10123_taxing.rtf
    │   │   │   FirstName_Lastname_10123_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10123_taxing
    │   ├───FirstName_Lastname_10124
    │   │   │   FirstName_Lastname_10124_data.rtf
    │   │   │   FirstName_Lastname_10124_text.txt
    │   │   │
    │   │   └───FirstName_Lastname_10124_numbers
    │   └───FirstName_Lastname_10125
    │       │   FirstName_Lastname_10125.rtf
    │       │   FirstName_Lastname_10125_text.txt
    │       │
    │       └───FirstName_Lastname_10125_names
    └───Raw
    

    编辑:(工作解决方案)

    如果这确实是你的问题,那么这就是你问题的有效解决方案。请注意,所有函数、代码块和进程都有一个
    Rem
    ,在代码中一步一步地解释它

    因此,使用代码的基,我们可以获取
    uniqueclientid
    ,然后将其设置为一个名为
    FolderIDNumber
    的字符串。此字符串将在
    find
    中使用,以仅显示
    dir
    循环中的有效文件夹

    随着主
    文件夹
    name\u names\u uniqueclientid文件夹在一个循环中使用,我们可以自由地处理
    Raw
    中的文件以进行移动。这很容易,因为我们现在有了
    dir
    的所有数据。我们有两个
    dir
    循环的原因是一个只抓取文件夹,另一个只抓取文件。这样,我们就可以将它们正确地
    复制到指定的name\u names\u uniqueclientid文件夹中


    有关任何命令的帮助,请执行以下操作:

    • 呼叫/?
    • se