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