将文件移动到其他目录

时间:2017-05-10 21:13:04

标签: c++ windows batch-file

我正在尝试将多个目录中的文件复制到一个目录中。

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

我想用代码执行此操作的原因是数据集大约有。 6000个文件夹,因此手动执行是不切实际的。这可以通过WinApi完成,因为我不需要创建这个跨平台。我只想合并血腥的文件夹。

到目前为止,我已经设法将png文件的路径全部保存到.txt中,并保存在每行上。

示例:

  

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

只是想知道我是否可以从上面的路径移动到另一个目录。

ANON给出的解决方案我相信是针对linux的,但是使用命令行中的xCopy几乎是一样的。相反,只需在源路径之前添加/ s以包含目录中的所有内容。希望这有助于某人。

3 个答案:

答案 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文件以进行复制更容易。

在您喜欢的编辑器中执行以下操作:

  1. Prepend' cp'你的所有行。

  2. 追加'目的地路径'你的所有行。

  3. 将文件重命名为.bat并从cmd窗口运行。

  4. 作为示例,从

    更改上面的行
    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时,我会检查输出是否存在重复文件名的错误。

相关问题