xcopy文件到单个目录


21

我想在Windows计算机上使用xcopy将所有带有.png扩展名的文件提取到一个目录中。

我尝试了xcopy C:\folder\*.png /s C:\png\,但是它却将子目录保留在\ folder内(例如,在C:\ png中,有C:\ png \ a \ b \ c \ img.png),这是我不需要的。我只是希望所有C. \ png中的.png都没有保留C:\ folder中的目录结构。


Answers:


39

这可以用好旧的完成for

for /r C:\Folder %f in (*.png) do @copy "%f" C:\png

没有什么花哨。


有用!小心解释%f它的用途是什么?
bobobobo

这是循环变量。
乔伊

3
这对我不起作用,我得到了一些影响f" was unexpected at this time。更改%f%%f工作。但是,我在批处理文件中运行此命令:如果在命令行而不是在批处理程序中使用FOR命令,请仅使用一个百分号:%G代替%% G。 ss64.com/nt/for.html
ta.speot.is 2014年

1
嗯是的 这是您所期望的,并且与您引用的完全一样。我的困惑从何而来?
2014年

1
@kayleeFrye_onDeck:据我所知,没有特殊的变量。我唯一想到的是,不熟悉的人for会对两种不同d的事物感到困惑%~dd。该for文档建议对变量使用大写字母以避免混淆,但我认为替换仍然可以与变量名称区分开。
乔伊(Joey)

1

如果您安装了cygwin,则可以找到以下工作:

cp `find /cygdrive/c/folder/* -name '*png'` /cygdrive/c/png/

(尽管如果任何文件名中都包含空格,那将会带来麻烦-尽管您会发现该find命令的某些变体在所有情况下都可以使用)

如果您运行的是Vista,2003或2008,则不太灵活但仍有用的“ forfiles”是您的朋友。就像是:

FORFILES /P c:\folder\ /M *.png /S /C "cmd /c copy @file c:\png\"

注意:我没有测试以上任何一个命令,但是从理论上讲它们应该可以工作...


+1刚刚验证了FORFILES命令是否有效。我运行了两次,它复制了第二次w / out提示,所以我认为如果发现重复,它只会覆盖。
hyperslug
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.