Batch file 如何仅使用cmd从子文件夹复制文件?
我的文件夹结构如下:Batch file 如何仅使用cmd从子文件夹复制文件?,batch-file,cmd,Batch File,Cmd,我的文件夹结构如下: -MainDir -f0 -f0 -f0 -a.txt -b.txt -c.txt -f1 -f1 -f1 -aa.txt -bb.txt -cc.txt 如果你在上面看到我的文件在第三个文件夹中的层次结构。现在我的要求是只能将主文件夹及其文件复制到其他位置。例如:上述结构的输出应如下所示: -MainDir -f0 -a.txt -b.txt -
-MainDir
-f0
-f0
-f0
-a.txt
-b.txt
-c.txt
-f1
-f1
-f1
-aa.txt
-bb.txt
-cc.txt
如果你在上面看到我的文件在第三个文件夹中的层次结构。现在我的要求是只能将主文件夹及其文件复制到其他位置。例如:上述结构的输出应如下所示:
-MainDir
-f0
-a.txt
-b.txt
-c.txt
-f1
-aa.txt
-bb.txt
-cc.txt
但当我尝试使用XCOPY时,所有文件夹都会按原样复制。因此,我试图找到一种方法来实现我的目标文件夹结构,如上图所示。下面将循环main下的目录,查找所有文件,并将它们全部放在目标中最顶层的子目录中,正如您所寻找的: CMD脚本:
@(SETLOCAL
ECHO OFF
SET "_MainDir=C:\Main\Dir"
SET "_DestDir=%Temp%\Destination\Main\Dir"
)
FOR /D %%A in (
%_MainDir%\*
) DO (
IF NOT EXIST "%_DestDir%\%%~nxA" MD "%_DestDir%\%%~nxA"
FOR /F %%a IN ('
DIR /A-D /S /B "%%~fA\*"
') DO (
ECHO Copying: "%%~fa"
ECHO To: "%_DestDir%\%%~nxA\%%~nxa"
COPY /B /V /Y "%%~fa" "%_DestDir%\%%~nxA\%%~nxa"
)
)
以下内容将循环main下的目录,查找所有文件,并将它们全部放在您要查找的目标中最顶层的子目录中: CMD脚本:
@(SETLOCAL
ECHO OFF
SET "_MainDir=C:\Main\Dir"
SET "_DestDir=%Temp%\Destination\Main\Dir"
)
FOR /D %%A in (
%_MainDir%\*
) DO (
IF NOT EXIST "%_DestDir%\%%~nxA" MD "%_DestDir%\%%~nxA"
FOR /F %%a IN ('
DIR /A-D /S /B "%%~fA\*"
') DO (
ECHO Copying: "%%~fa"
ECHO To: "%_DestDir%\%%~nxA\%%~nxa"
COPY /B /V /Y "%%~fa" "%_DestDir%\%%~nxA\%%~nxa"
)
)
考虑到每个层次结构分支中的三个子目录名称相同(如
f0\f0\f0
和f1\f1\f1
),这是一项非常简单的任务,与a一起使用:
rem//循环主目录的直接子目录:
对于/D%%I in(“D:\MainDir\*”)do(
rem/*将文件路径构建到第二个子目录中(尽管没有文件);
rem第三个子目录及其内容由于`/S`选项而被视为;
rem复制目标目录然后接收
rem第二个源子目录,包括第三个源子目录:*/
xcopy/S/I“%%~I\%%~nxI\*.*”D:\CopyDir
)
考虑到每个层次结构分支中的三个子目录名称相同(如f0\f0\f0
和f1\f1\f1
),这是一项与a一起使用的非常简单的任务:
rem//循环主目录的直接子目录:
对于/D%%I in(“D:\MainDir\*”)do(
rem/*将文件路径构建到第二个子目录中(尽管没有文件);
rem第三个子目录及其内容由于`/S`选项而被视为;
rem复制目标目录然后接收
rem第二个源子目录,包括第三个源子目录:*/
xcopy/S/I“%%~I\%%~nxI\*.*”D:\CopyDir
)
虽然仍包含在Windows 10中,但有人反对使用Xcopy。Robocpy可以实现我在这里试图实现的目标吗。是的,你能分享一个例子吗?分支中的子文件夹是否真的有相同的名称(f0\f0\f0
)?是@aschipfl。这就是它们在数据源上的结构。虽然仍然包含在Windows 10中,Xcopy
已被弃用,取而代之的是。Robocpy能否实现我在这里试图实现的目标。是的,你能分享一个例子吗?分支中的子文件夹是否真的有相同的名称(f0\f0\f0
)?是@aschipfl。这就是它们在数据源上的结构。这将创建第一个文件夹f0,但没有复制任何文件(a.txt、b.txt…)。正如我所提到的,文件位于f0文件夹的第三级,所以基本上我试图去掉前两个冗余文件夹,并将结构的其余部分与文件一起复制。此外,还有多个类似的文件夹结构,如f0、f1等。实际上,我认为复制不应该存在,因为我看到错误,复制是一个无法识别的命令。这是一个输入错误,我修改了代码以解决该问题。@Compo感谢捕获该组件。@vsingh这是一个输入错误,Compo更正了代码,我刚刚从几行中放出了echo
,这几行只是为了给你打印状态。这是在创建第一个文件夹f0,但是没有一个文件(a.txt,b.txt…)被复制。正如我所提到的,文件位于f0文件夹的第三级,所以基本上我试图去掉前两个冗余文件夹,并将结构的其余部分与文件一起复制。此外,还有多个类似的文件夹结构,如f0、f1等。实际上,我认为复制不应该存在,因为我看到错误,复制是一个无法识别的命令。这是一个输入错误,我修改了代码以解决该问题。@Compo感谢捕获该组件。@vsingh这是一个输入错误,Compo更正了代码,我只是从几行中放出了echo
,只是为了给你打印出状态。我错报了要求。我又看了一眼结构。主目录有f0、f1…fn文件夹。每个文件夹都有子文件夹和文件。现在我们需要将其复制到目标位置,以便合并子文件夹中的所有文件。因此,目标目录将只有关键的第一级文件夹,如f0、f1、f2…fn。基础文件夹中的所有文件都将合并并保存在这些关键文件夹下。那么,会不会发生文件名冲突?我的意思是,第一级文件夹中的文件与子(子)目录中的文件具有相同的名称?是的,我检查过了,父级文件夹和子文件夹不会有任何重复的文件名。我发现您要求a满足更新的要求,我把答案的一部分移到了这里,因为它更适合那里……我错报了要求。我又看了一眼结构。主目录有f0、f1…fn文件夹。每个文件夹都有子文件夹和文件。现在我们需要将其复制到目标位置,以便合并子文件夹中的所有文件。因此,目标目录将只有关键的第一级文件夹,如f0、f1、f2…fn。基础文件夹中的所有文件都将合并并保存在这些关键文件夹下。那么,会不会发生文件名冲突?我的意思是,第一级文件夹中的文件与子(子)目录中的文件同名?是的,我检查过了,父级文件夹和子文件夹中不会有任何重复的文件名。我发现您要求a涵盖更新的要求,我将此答案的一部分移到了,因为它更适合那里。。。