Użyj skryptu wsadowego, aby sprawdzić, czy plik jest ukryty

0

Piszę plik wsadowy, który odkryje i uruchomi inny plik wsadowy lub, jeśli plik jest już ukryty, uruchomi plik wsadowy i ukryje go ponownie. Jak sprawdzić, czy plik jest ukryty?

xplusplus
źródło
Mam kod, który może odkryć pliki, gdy ukrytych plików nie można odznaczyć. Oto on - attrib -s -h K: *. * / S / d Ale nie znam żadnej metody sprawdzania, jak uzyskać listę ukrytych plików. Dowiedz się więcej
Marks PC Solution
Znaleziono to na innej stronie. Ten sam temat. [windows-batch-script-to-unhide-files-hidden-by-virus] [1] [1]: stackoverflow.com/questions/8095002/...
rdubyab

Odpowiedzi:

0

Możesz użyć tego w PowerShell, aby uzyskać listę ukrytych plików

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

Powinieneś być w stanie użyć dir/ahtego samego wyniku w cmd w bieżącej ścieżce.

Zulgrib
źródło
0

Wiele sposobów.

1) DIR / AH (prawdopodobnie najprostsza metoda)

Użyj polecenia DIR, aby wyszukać plik z określonym atrybutem. Zwraca sukces, jeśli zostanie znaleziony, błąd jeśli nie.

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

2) polecenie ATTRIB

Kody atrybutów są pisane wielkimi literami. Kod ukryty to Hi uważam, że zawsze znajduje się na piątej pozycji. Użyj FINDSTR, aby wyszukać kod.

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

3) DLA ~amodyfikatora zmiennego

Kody atrybutów są pisane małymi literami i są w innej kolejności niż komenda ATTRIB. Kod ukryty znajduje się hna czwartej pozycji. Użyj FINDSTR, aby wyszukać kod.

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

lub użyj operacji podciągania. Nie zapominaj, że podciąg jest indeksowany na 0.

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) ~aModyfikator parametrów

Zasadniczo taki sam jak w przypadku zmiennej FOR, z tym wyjątkiem, że teraz używa parametru skryptu lub podprogramu.

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

lub

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
dbenham
źródło