批处理如何移动点目录(隐藏目录)?

问题描述 投票:0回答:2

我在批处理脚本(.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\"失败。

如何将隐藏的目录以及其余文件和目录一起移动?

batch-file directory move
2个回答
0
投票

对于您要执行的操作,您可以先使用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


0
投票

.开头的文件或目录名称并不意味着它是隐藏的。

无论如何,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
)
© www.soinside.com 2019 - 2024. All rights reserved.