Use script em lote para verificar se o arquivo está oculto


0

Estou escrevendo um arquivo de lote que mostrará e executará outro arquivo de lote ou, se o arquivo já estiver reenviado, executará o arquivo de lote e o ocultará novamente. Como faço para verificar se um arquivo está oculto?


Eu tenho um código que pode exibir arquivos quando os arquivos ocultos não podem ser desmarcados. Aqui está - attrib -s -h K: *. * / S / d Mas eu não conheço nenhum método para verificar como obter uma lista de arquivos ocultos. Saber mais
Marks PC Solution

Encontrei isto em outro site. Mesmo assunto. [windows-batch-script-para-unhide-files-hidden-by-virus] [1] [1]: stackoverflow.com/questions/8095002/…
rdubyab

Respostas:


0

Você pode usar isso no PowerShell para obter uma lista de arquivos ocultos

Get-ChildItem X:\My\Path -Recurse -Force | Where { ($_.Attributes.ToString() -Split ", ") -Contains "Hidden" } | Select FullName

Você deveria poder usar dir/ah para o mesmo resultado em cmd no caminho atual.


0

Muitas maneiras.

1) DIR / AH (provavelmente o método mais simples)

Use o comando DIR para procurar um arquivo com um atributo específico. Retorna o sucesso se encontrado, erro se não.

dir /ah file.ext >nul 2>nul && (
  echo file.ext is hidden
) || (
  echo file.ext is NOT hidden
)

2) comando ATTRIB

Os códigos de atributo estão em maiúsculas. O código para oculto é He acredito que esteja sempre na quinta posição. Use FINDSTR para procurar o código.

attrib file.ext | findstr "^....H" >nul && (
  echo file.ext is hidden
) || (
  echo file.ext is NOT hidden
)

3) para variável ~a modificador

Os códigos de atributo estão em letras minúsculas e estão em uma ordem diferente do comando ATTRIB. O código para oculto é h na quarta posição. Use FINDSTR para procurar o código.

for %%F in (file.ext) do echo %%~aF | findstr "^...h" >nul 2>nul &&
  echo file.ext is hidden
) || (
  echo file.ext is NOT hidden
)

ou use uma operação de substring. Não esqueça que a substring é 0 indexada.

for %%F in (file.ext) do set "attr=%%~aF"
if %attr:~3,1% equ h (
  echo file.ext is hidden
) else (
  echo file.ext is NOT hidden
)

4) Parâmetro ~a modificador

Basicamente o mesmo que com a variável FOR, exceto agora usando um parâmetro de script ou sub-rotina.

call :IsHidden file.ext &&
  echo file.ext is hidden
) else (
  echo file.ext is NOT hidden
)
exit /b

:isHidden
echo %~a1 | findstr "^...h" >nul 2>nul
exit /b

ou

call :IsHidden file.ext &&
  echo file.ext is hidden
) else (
  echo file.ext is NOT hidden
)
exit /b

:isHidden
setlocal
set "att=%~a1"
if %att:~3,1% equ h exit /b 0
exit /b 0
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.