我在批处理脚本(.bat)中使用以下脚本行将目录的内容复制到另一个目录:
move "C:\Program Files\Git\usr\tmp\*" "C:\Program Files\Git\usr\bin\"
for /d %%a in ("C:\Program Files\Git\usr\tmp\*") do move "%%~fa" "C:\Program Files\Git\usr\bin\"
第一行移动文件,第二行移动文件夹。但是,这些操作不会移动隐藏的目录(或.directories)。 .git
是一个常见示例。我尝试for /d %%a in ("C:\Program Files\Git\usr\tmp\.*") do move "%%~fa" "C:\Program Files\Git\usr\bin\"
失败。
如何将隐藏的目录以及其余文件和目录一起移动?
对于您要执行的操作,您可以先使用attrib
命令,然后再移动内容以从文件中删除隐藏的属性。您可以使用它来实现您的目标:
attrib -h "C:\Program Files\Git\usr\tmp\*.*"
move "C:\Program Files\Git\usr\tmp\*.*" "C:\Program Files\Git\usr\bin\"
要通过其他方式执行此操作,可以执行以下操作:
attrib -h "<SourceParentFolder>\*.*"
move <source> <destination>
NOTES:您应注意@Mark的评论。使用C:\file\path\folder\*
不正确。您应该使用C:\file\path\folder\*.*
。有关更多信息,请查看@Mark's comment
有关attrib
的更多信息,请使用attrib /?
或检查this
以.
开头的文件或目录名称并不意味着它是隐藏的。
无论如何,for
/ for /D
遍历未隐藏的文件/目录。但是,dir
允许在使用/A
选项时也返回隐藏的项目,可以使用以下选项:
rem // Change into source directory:
pushd "C:\Program Files\Git\usr\tmp" && (
rem // Iterate over all directories, even hidden and system ones:
for /F "delims= eol=|" %%I in ('dir /B /A:D ".*"') do (
rem // Actually move the directory:
move "%%I" "C:\Program Files\Git\usr\bin\"
)
rem // Return from source directory:
popd
)