我正在尝试将多个目录中的文件复制到一个目录中。
基本上我收到了一个包含单个文件夹中个别png文件的数据集。我想要的是带有所有png文件的一个文件夹。
我想用代码执行此操作的原因是数据集大约有。 6000个文件夹,因此手动执行是不切实际的。这可以通过WinApi完成,因为我不需要创建这个跨平台。我只想合并血腥的文件夹。
到目前为止,我已经设法将png文件的路径全部保存到.txt中,并保存在每行上。
示例:
C:/用户/ rudwi /文档/ Visual_Studio_2017 /项目/ ExtractPhotos / ExtractPhotos / LFW-deepfunneled / Abbas_Kiarostami / * PNG
。
只是想知道我是否可以从上面的路径移动到另一个目录。
ANON给出的解决方案我相信是针对linux的,但是使用命令行中的xCopy几乎是一样的。相反,只需在源路径之前添加/ s以包含目录中的所有内容。希望这有助于某人。
答案 0 :(得分:2)
cmd的脚本可能看起来像这样:
set DESTDIR= C:\DestinationPath\
for /f "delims=" %%i in (filelist.txt) do (xcopy "%%i" %DESTDIR% /i /y )
注意,请勿忘记目的地末尾的反斜杠。当然,脚本可以参数化:
set DESTDIR= %2
for /f "delims=" %%i in (%1) do (xcopy "%%i" %DESTDIR% /i /y )
将它放入mcopy.cmd文件中,它可以用作:
mcopy filelist.txt C:\ DestinationPath \
答案 1 :(得分:1)
由于您已拥有源路径,因此创建命令的.bat文件以进行复制更容易。
在您喜欢的编辑器中执行以下操作:
Prepend' cp'你的所有行。
追加'目的地路径'你的所有行。
将文件重命名为.bat并从cmd窗口运行。
作为示例,从
更改上面的行C:/Users/rudwi/Documents/Visual_Studio_2017/Projects/ExtractPhotos/ExtractPhotos/lfw-deepfunneled/Abbas_Kiarostami/*.png
到
cp C:/Users/rudwi/Documents/Visual_Studio_2017/Projects/ExtractPhotos/ExtractPhotos/lfw-deepfunneled/Abbas_Kiarostami/*.png C:/DestinationPath
答案 2 :(得分:1)
当我必须做类似的事情时,如果我需要快速完成而不编写任何脚本,我会这样做:
从子目录中收集所有png
个文件:
dir /s /b *.png > copy.bat
然后在顶部添加copy.bat
修改您的@echo off
,并在call:mycopy
前添加每个文件名,然后在copy.bat
的底部添加:
goto:eof
:mycopy
copy %1 C:\mynewdir
exit /b 0
不是最好的方法,但如果没有真正做任何脚本,它很快就会完成。然后在运行copy.bat时,我会检查输出是否存在重复文件名的错误。