我正在尝试编写一个 bat 脚本以更好地组织我客户的文件。我创建了两个文件夹。第一个名为“文件夹”,其中包含每个客户端及其文件的文件夹。每个客户端的文件夹名称都具有结构 name_surname_uniqueclientid。第二个名为“Raw”,包含原始客户端文件和文件夹,但每个文件夹或文件在其名称中都包含唯一的客户端 ID。我的目标是从每个“文件夹”文件夹中提取每个 ID,并检查“原始”文件夹中是否有包含此 ID 的文件或文件夹。如果有,应该将它们复制到相应的“文件夹”中
我的问题是我无法检查包含 id 的文件夹并将它们移动到相应的“文件夹”文件夹。
我已经设法从文件夹的名称中提取 id,检查包含此 id 的“Raw”文件夹中的文件并将它们复制到相应的“folders”文件夹中。据我所知,脚本没有输入最后一个 if。它应该找到包含 id 的文件夹,如果有的话,将它们复制到相应的“文件夹”文件夹中。
@echo off
setlocal enabledelayedexpansion
for /d %%a in ("folders\*") do (
for /f "tokens=3 delims=_" %%t in ("%%~nxa") do (
if exist "Raw\*%%t*" (
xcopy "Raw\*%%t*" "%%a"
)
下面这部分不起作用:
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
|
|
|
|
|
└───
如果文件夹已存在合并