![使用批处理文件无法从子目录中查找并移动隐藏文件](https://linux22.com/image/1314109/%E4%BD%BF%E7%94%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E6%97%A0%E6%B3%95%E4%BB%8E%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%B9%B6%E7%A7%BB%E5%8A%A8%E9%9A%90%E8%97%8F%E6%96%87%E4%BB%B6.png)
我正在尝试使用此批处理文件来查找和移动文件...但它对隐藏文件不起作用。缺少什么?
@echo off
setlocal
set root=E:\backup
set dest=E:\Tmp
for /f "delims=" %%f in ('dir /ad /b /s %root%') do @move "%%f\~$*.SLD*" %dest%
endlocal
答案1
无论如何你都必须取消隐藏文件,因为移动无法处理无法找到的文件(即使你提供了完整的文件名)。没有标志可以给移动让它查找带有隐藏属性标记的文件。
使用以下方法取消隐藏文件属性-h.for
用以下组替换你的线路:
for /f "delims=" %%f in ('dir /ad /b /s %root%') do (
@attrib -h "%%f\~$*.SLD*"
@move "%%f\~$*.SLD*" %dest%
)
你可以使用更复杂的工具,例如复制或者机器人复制,可以对隐藏文件进行操作。当然,这些都是复制工具,因此复制完成后,您仍然需要取消隐藏原始文件并将其删除。