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?
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?
Odpowiedzi:
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