Você pode executar dois loops / f separados com o dir comando usando o /a:h
em um para iterar os arquivos ocultos e a:/r
no outro para iterar o somente leitura arquivos .
Você usaria o comando attrib com o parâmetro -h
para remover o oculto atributos dos arquivos e com o parâmetro -r
para remover os atributos somente leitura dos arquivos.
Observação: você pode usar "g*.exe"
como curinga de todos os arquivos exe, começando com a letra " g ". Além disso, certifique-se de executar isso a partir do diretório em que deseja iniciar sua localização negativa dos arquivos aplicáveis.
Remover atributos ocultos
FOR /F "TOKENS=*" %a IN ('dir /s /b /a:h "*.exe"') do attrib -h "%~a"
Remover atributos somente leitura
FOR /F "TOKENS=*" %a IN ('dir /s /b /a:r "*.exe"') do attrib -r "%~a"
Remover o arquivo falso e renomear o arquivo real de volta
Por seu esclarecimento para encontrar os arquivos exe que são prefixados com o caractere g
no início do nome do arquivo, use o script em lote abaixo após remover os atributos hidden e somente leitura . Isso localizará recursivamente os arquivos g
prefixados, definirá uma variável com g
dos nomes de arquivos, removerá o arquivo falso e renomeará o arquivo g
prefixado para o nome original.
@ECHO ON
setlocal enabledelayedexpansion
set src=C:\
set mvFldr=C:\Moved
if not exist "%mvFldr%" MD "%mvFldr%"
FOR /F "TOKENS=*" %%a IN ('dir /s /b /a-d "%src%\g*.txt"') do (
set fakename=%%~NXa
set realname=!fakename:~1!
if /i not [%%~Xa]==[.exe] GOTO :EOF
if exist "%%~DPa!realname!" if exist "%%~DPa!fakename!" move "%%~DPa!realname!" "%mvFldr%"
::if exist "%%~DPa!realname!" if exist "%%~DPa!fakename!" del /q /f "%%~DPa!realname!"
ren "%%~DPa!fakename!" "!realname!"
)
EXIT
Mais recursos
- Para / F
- Dir
- Atributo
- SetLocal EnableDelayedExpansion
- Editar / substituir variável
- Ren
- Mover
-
FOR /?
In addition, substitution of FOR variable references has been enhanced. You can now use the following optional syntax:
%~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only