ontem eu mesclei duas unidades (D: vazio e E: meus dados) com o mestre de partição EASEUS no WinPE. mas falhou e então percebi que 70% dos meus dados foram movidos para uma pasta (D:\Local Disk E_72420221840) e 30% ainda permanecem em E. então copiei todos os dados para um novo disco e excluí partições e criei uma nova partição com um tamanho de cluster de 64 KB, restaurou meus dados copiados anteriormente para a nova partição e notei que todos os meus ícones personalizados para as pastas desapareceram. depois de alguma pesquisa encontrei problema. O atributo somente leitura é definido para todas as pastas por padrão e é necessário exibir o ícone personalizado especificado em desktop.ini. mas nenhuma das minhas pastas tem o sinalizador somente leitura , então testei abaixo do código
attrib +R "foldername"
e funcionou (o ícone personalizado apareceu novamente), mas eu tenho 600 GB de dados com muitas pastas, então existe uma maneira de redefinir facilmente todos os atributos da pasta para somente leitura padrão? Também tentei abaixo
FOR /f %a IN ('DIR /A/D/B') DO ATTRIB +R "%a"
mas também altera os atributos dos arquivos (não quero que meus arquivos inteiros sejam somente leitura) e não altera as subpastas. acho que preciso de um script de loop for para verificar %%a é pasta ou arquivo e também procurar todas as subpastas . alguns dias atrás eu criei um script para uma tarefa que pode verificar se 1% é uma pasta ou um arquivo, usei este template:
if exist %1\ (echo %%1 is Folder) else if exist %1 (echo %%1 is File) else (exit)
idk se é bom para o meu caso ou não, porque ainda não testei muito.
Atualização: como @Señor CMasMas disse que eu estava errado. o atributo Somente leitura é padrão apenas para pastas com ícone personalizado. então eu não quero mexer com todas as pastas, apenas pastas que contêm desktop.ini.
Aqui está a resposta que eu acredito que você está procurando.
Tente isto:
for /r %d in (.) do if exist "%d\desktop.ini" pushd "%d" && ATTRIB +R . && popd
Se você estiver colocando isso em um arquivo de lote, precisará dobrar os sinais "%".
Isso poderia ter funcionado sem o
pushd
epopd
, mas deixo-os aqui para que, se outra pessoa estiver trabalhando com um comando que não segue um caminho, eles possam substituir isso para que funcione.