复制文件夹和子文件夹中的前10个文件

我试图从深度嵌套的文件结构中获得第一个(任何)10个文件。 我可以使用XCOPY source dest /T /E来构build文件夹结构,但是我想要从每个文件夹和子文件夹中获取10个文件并复制这些文件。

有没有一个工具可以为我做到这一点?

你的问题听起来像你想从每个子文件夹的前10个文件? 这应该做(不完全testing!):

 echo off xcopy /Y %1 %2 /T /E dir %1 /b /s /A:D >tempfolderlist.txt for /f "tokens=1 delims=¬" %%a in (./tempfolderlist.txt) do ( dir "%%a" /b /A:-D >tempfilelist.txt setlocal enabledelayedexpansion set counter=0 for /f "tokens=1 delims=¬" %%b in (./tempfilelist.txt) do ( IF !counter! LSS 10 call :docopy %1 "%%a\%%b" %2 set /a counter+=1 ) endlocal ) del /q tempfolderlist.txt del /q tempfilelist.txt GOTO:EOF :docopy set sourcePath=%~1 set sourceFile=%~2 set targetPath=%~3 set sourceNoDrive=%sourceFile:~3,5000% set sourcePathNoDrive=%sourcePath:~3,5000% set sourceNoDrive=!sourceNoDrive:%sourcePathNoDrive%\=! copy "%sourceFile%" "%targetPath%\%sourceNoDrive%" >> out.txt GOTO:EOF 

如果它被保存到一个名为“first10.cmd”的batch file,你可以像这样使用它:

 first10.cmd "C:\Temp\SourcePath" "C:\Temp\DestPath" 

首先使用xcopy准备destintation文件夹结构,就像在你的问题中一样。 然后我们将所有文件夹的列表保存到一个文件中,并循环遍历每个文件夹。 对于每个文件夹,我们保存该文件夹中所有文件的列表,并循环遍历每个文件。 对于每个文件, :docopy构build复制命令并执行它。

如果你只想要整个结构中的前10个文件,你可以使用这个(从欧文的回答中大量借鉴)

 @echo off mkdir %2 dir %1 /b /s /A:-D >tempfilelist.txt setlocal enabledelayedexpansion set counter=0 for /f "tokens=1 delims=¬" %%b in (./tempfilelist.txt) do ( IF !counter! LSS 10 call :docopy "%%b" %2 set /a counter+=1 ) endlocal ) del /q tempfilelist.txt GOTO:EOF :docopy copy %1 %2 GOTO:EOF 

像这样使用它:

 mybatchfilename.bat "C:\Source" "C:\Target" 

我几乎可以肯定,你不能使用常规的xcopy命令来做到这一点,你将不得不使用某种forms的脚本来find你真正想要的文件,然后把它们一个接一个地传递给xcopy–或者build立一个地狱的一个'排除'string:)