将文件移动到不同的目录

我有一个恶梦,试图从多个目录复制文件到一个单一的目录。

基本上我收到一个数据集与单个文件夹中的个人PNG文件。 我想要的是一个包含所有png文件的文件夹。

我想用代码来做这件事的原因是数据集大约是。 6000文件夹,因此手动进行是不现实的。 这可以用WinApi来完成,因为我不需要制作这个跨平台。 我只是想合并血腥的文件夹。

到目前为止,我已经设法获得所有保存到.txt文件中的png文件的path,这些文件保存在每一行中。

例:

C:/用户/ rudwi /文档/ Visual_Studio_2017 /项目/ ExtractPhotos / ExtractPhotos / LFW-deepfunneled / Abbas_Kiarostami / * PNG

只是想知道有一种方法,我可以从上面的path移动到另一个目录。

ANON给出的解决scheme我相信是Linux,但使用命令行中的xCopy几乎是相同的。 相反,只需在源path之前添加/ s即可将所有内容包含在目录中。 希望这有助于某人。

因为你已经有了源代码路径,只需要创建一个命令的.bat文件来做一个副本比较容易。

在你最喜欢的编辑器中执行以下操作

  1. 在你的所有行上加上'cp'。

  2. 将“目标路径”追加到所有行中。

  3. 将文件重命名为.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 

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 \

当我不得不做这样的事情,如果我需要快速完成一次,而不写任何脚本,我会这样做:

收集所有来自subdirs的png文件: dir /s /b *.png > copy.bat

然后通过在顶部添加@echo off修改你的copy.bat ,并在每个文件名前加上call:mycopy ,然后在copy.bat的底部添加:

 goto:eof :mycopy copy %1 C:\mynewdir exit /b 0 

不是最好的方法,但是不用做任何脚本就可以快速完成。 然后当运行该copy.bat我会检查输出错误重复的文件名。