如何在Windows命令提示符中实现类Unix系统`mv */* ./`的文件移动操作?
如何在Windows命令提示符中实现类Unix系统
mv */* ./的文件移动操作? 嗨,我完全懂你的需求——把所有子目录里的文件一次性移到当前目录,Unix下一行命令搞定,Windows却卡壳了对吧?别着急,我给你两种靠谱的方法:
方法一:用命令提示符(CMD)的循环命令
Windows的move命令不支持*/这种Unix风格的通配符,但我们可以用for循环来实现递归移动:
for /r %d in (*) do move "%d" .
- 解释一下:
for /r会遍历当前目录下所有子目录里的文件,%d会保存每个文件的完整路径; - 加引号是为了兼容带空格或特殊字符的文件名;
- 如果是写在批处理(
.bat)文件里,要把%d改成%%d哦。
方法二:用PowerShell(更简洁)
现在Windows系统都自带PowerShell,用它来做这个操作更直观:
Get-ChildItem -Recurse -File | Move-Item -Destination .
Get-ChildItem -Recurse -File会递归找出所有文件(排除目录);- 管道
|把这些文件传给Move-Item,指定目标为当前目录(.); - 如果遇到重名文件,PowerShell会默认提示你是否覆盖,要是想直接覆盖(谨慎操作!),可以加
-Force参数:Get-ChildItem -Recurse -File | Move-Item -Destination . -Force
两种方法都能帮你把所有子目录里的文件一次性移到当前目录,选你顺手的用就行~
备注:内容来源于stack exchange,提问作者onigame
相关产品推荐
相关产品推荐

