【发布时间】:2020-09-06 03:13:47
【问题描述】:
我在批处理脚本 (.bat) 中使用以下脚本行将目录 (foo) 的内容复制到另一个目录 (bar):
move "C:\foo\*.*" "C:\bar\"
for /d %%a in ("C:\foo\*") do move "%%~fa" "C:\bar\"
第一行移动文件,第二行移动文件夹。但是,这些并没有移动隐藏目录。 .git 是一个常见的例子。我试过for /d %%a in ("C:\foo\.*") do move "%%~fa" "C:\bar\" 没有成功。
如何将隐藏目录与其他文件和目录一起移动?
编辑:以下解决方案非常接近于执行所需的操作,但由于“移动”命令无法找到隐藏文件夹而失败(在未隐藏且有效的 .folder 上尝试了相同的操作):
for /f "tokens=*" %%G in ('dir /b /a:hd "C:\foo\*"') do move "C:\foo\%%G" "C:\bar\"
【问题讨论】:
-
.*.*。 LAST.之后的部分是扩展。以前的.只是文件名的一部分。所以文件以.开头,然后是包括.在内的任何文本,直到最后一个.,然后是任何扩展名。*本身被假定为表示*.*(与 MSDos 兼容的东西),但并非无处不在。使用正确的形式*.*。 -
你可以尝试使用
attrib -h *.*来移除隐藏属性 -
@Mark 已修复,感谢您指出这一点
标签: batch-file directory move