Encontre e mova arquivos ocultos de subdiretórios com arquivo em lote não funcionando

Encontre e mova arquivos ocultos de subdiretórios com arquivo em lote não funcionando

Estou tentando usar este arquivo em lote para localizar e mover arquivos... mas não funciona em arquivos ocultos. O que está a faltar?

@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

Responder1

Você terá que reexibir os arquivos de qualquer maneira, porquemovernão funcionará em um arquivo que não consegue encontrar (mesmo se você fornecer o nome completo do arquivo). Não há bandeira para darmoverpara que ele procure por arquivos marcados com o atributo oculto.

Reexibir os arquivos comatribuir -h. Substitua sua forlinha por este conjunto:

for /f "delims=" %%f in ('dir /ad /b /s %root%') do (
  @attrib -h "%%f\~$*.SLD*"
  @move "%%f\~$*.SLD*" %dest%
)

Você poderia usar uma ferramenta mais sofisticada, comoxcopiarourobocópia, que pode operar em arquivos ocultos. Claro, essas são ferramentas de cópia, então você ainda terá que reexibir os arquivos originais e excluí-los após a conclusão da cópia.

informação relacionada