Localize e mova arquivos ocultos de subdiretórios com arquivos em lotes que não estão funcionando

0

Eu estou tentando usar esse arquivo em lotes 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
joe tech
fonte
1
Por um lado, a opção / ad informa ao dir para listar apenas os diretórios.
EBGreen
Eu realmente não entendo a parte do nome do arquivo. O que seria ~$*.SLD* resolver para?
paradroid
@ENGreen: Isso parece pretendido. o /B O switch lista os resultados como caminhos básicos, sem informações adicionais. Cada resultado é analisado como a variável %% f no for comando
abstrask
@paradroid: "~ $" [Alguns ou nenhum caractere] ".sld" [Some or no characters] Eu acho?
abstrask
joe, está removendo o atributo oculto de uma opção?
abstrask

Respostas:

0

Você vai ter que mostrar os arquivos de qualquer maneira, porque mover não funcionará em um arquivo que não pode ser encontrado (mesmo que você forneça o nome completo do arquivo). Não há bandeira para dar mover para procurar arquivos marcados com o atributo oculto.

Mostrar os arquivos com attrib -h . Substitua seu for linha com 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, como xcopy ou robocopy , que pode operar em arquivos ocultos. Naturalmente, essas são ferramentas de cópia, portanto, você ainda terá que mostrar os arquivos originais e excluí-los após a conclusão da cópia.

Scott McKinney
fonte