Fórum Como tirar o atributo ´oculto´ de todas pastas de um drive?? #213992
13/02/2004
0
Olá,
Estou com o seguinte problema: preciso fazer backup de todos os subdiretórios de alguns drivers do meu servidor, mas um deles possui todas as suas pastas ocultas. Sendo assim não consigo realizar o backup dessas pastas. Tentei então utilizar a funcão ´FileSetAttr(´x:\Financa´,0)´ para para que as pastas não fiquem ocultas e assim eu possa realizar o backup, mas eu gostaria de fazer isso com todas ao mesmo tempo. Tentei algo como ´FileSetAttr(´x:\*.*´,0)´ e ´FileSetAttr(´x:\*.*/s´,0)´, mas não deu certo.
Alguém pode me ajudar?
...outro detalhe, após realizar o backup tenho que ocultar todas as pastas novamente.
Agradeço desde já....
Estou com o seguinte problema: preciso fazer backup de todos os subdiretórios de alguns drivers do meu servidor, mas um deles possui todas as suas pastas ocultas. Sendo assim não consigo realizar o backup dessas pastas. Tentei então utilizar a funcão ´FileSetAttr(´x:\Financa´,0)´ para para que as pastas não fiquem ocultas e assim eu possa realizar o backup, mas eu gostaria de fazer isso com todas ao mesmo tempo. Tentei algo como ´FileSetAttr(´x:\*.*´,0)´ e ´FileSetAttr(´x:\*.*/s´,0)´, mas não deu certo.
Alguém pode me ajudar?
...outro detalhe, após realizar o backup tenho que ocultar todas as pastas novamente.
Agradeço desde já....
Marcela_m
Curtir tópico
+ 0
Responder
Posts
16/02/2004
Marcela_m
Ninguém pode me ajudar?
Responder
Gostei + 0
16/02/2004
Keitarosan
Desenvolvi essa rotina pro seu caso aqui, acho que vai funcionar bem:
Com isso você pode setar qual pasta ou unidade desejada, ele vai setar todos os seus subdirs para visivel e logo em seguida vai voltar os atributos originais, entre a parte que dexa visivel e a que restaura os atributos voce pode usar sua rotina de backup ^__^
bom, acho que é isso :D
Espero ter ajudado
Type //Tipo criado para guardar info sobre o diretorio TDirInfo = record Diretorio: string; Atributo: Integer; end;
//Se você usa o Delphi 5 igual a mim, necessita declarar esta biblioteca para que a função DirectoryExists seja reconhecido USES FileCtrl;
procedure TForm1.Button1Click(Sender: TObject); var Criterio, Diretorio, PathAtual: string; Busca: TSearchRec; DirsList: array of TDirInfo; Attrs: Integer; Cont: Integer; procedure ChecarDirOcultos(Busca: TSearchRec); begin Diretorio := PathAtual + ´\´ + Busca.Name; Attrs := FileGetAttr(Diretorio); if DirectoryExists(Diretorio) and (Attrs <> 0) then begin SetLength(DirsList, Length(DirsList) + 1); DirsList[High(DirsList)].Diretorio := Diretorio; DirsList[High(DirsList)].Atributo := Attrs; FileSetAttr(Diretorio, 0); end; end; begin Criterio := ´c:\*.*´; PathAtual := ExcludeTrailingBackslash(ExtractFileDir(Criterio)); if FindFirst(Criterio, faDirectory or faHidden, Busca) = 0 then begin ChecarDirOcultos(Busca); while FindNext(Busca) = 0 do ChecarDirOcultos(Busca); end; // NESTE MOMENTO TODAS AS PASTAS ESTAO VISIVEIS // // // // INSIRA SEU CODIGO DE BACKUP DAS PASTAS NESSE ESPAÇO // // ESSA ROTINA SOMENTE CHECA OS SUBDIRETORIOS DA PASTA PRINCIPAL // ELE NÃO CHECA OS SUBDIRETORIOS DOS SUBDIRETORIOS, PARA ISSO // SERIA NECESSÁRIO MAIS UMA IMPLEMENTAÇÃO // // // // O CODIGO ABAIXO VOLTARÁ COM OS ATRIBUTOS ORIGINAIS DAS PASTAS for cont := 0 to High(DirsList) do begin FileSetAttr(DirsList[cont].Diretorio, DirsList[cont].Atributo); end; end;
Com isso você pode setar qual pasta ou unidade desejada, ele vai setar todos os seus subdirs para visivel e logo em seguida vai voltar os atributos originais, entre a parte que dexa visivel e a que restaura os atributos voce pode usar sua rotina de backup ^__^
bom, acho que é isso :D
Espero ter ajudado
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)