Utilisez le script batch pour vérifier si le fichier est caché


0

J'écris un fichier de commandes qui va afficher et exécuter un autre fichier de commandes ou, si le fichier est déjà non caché, exécuter le fichier de commandes et le cacher à nouveau. Comment vérifier si un fichier est caché?


J'ai un code qui peut afficher des fichiers lorsque les fichiers cachés ne peuvent pas être décochés. La voici - attrib -s -h K: *. * / S / d Mais je ne connais aucune méthode pour vérifier comment obtenir une liste de fichiers cachés. Apprendre encore plus
Marks PC Solution

Trouvé ceci sur un autre site. Même sujet. [Windows-batch-script-à-masquer-fichiers-caché par virus] [1] [1]: stackoverflow.com/questions/8095002/…
rdubyab

Réponses:


0

Vous pouvez l’utiliser dans PowerShell pour obtenir une liste des fichiers cachés.

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

Vous devriez pouvoir utiliser dir/ah pour le même résultat en cmd dans le chemin actuel.


0

Beaucoup de façons.

1) DIR / AH (probablement la méthode la plus simple)

Utilisez la commande DIR pour rechercher un fichier avec un attribut particulier. Retourne succès si trouvé, erreur sinon.

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

2) Commande ATTRIB

Les codes d'attribut sont en majuscule. Le code pour caché est Het je crois qu’il est toujours en cinquième position. Utilisez FINDSTR pour rechercher le code.

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

3) POUR variable ~a modificateur

Les codes d'attribut sont en minuscules et dans un ordre différent de celui de la commande ATTRIB. Le code pour caché est h en quatrième position. Utilisez FINDSTR pour rechercher le code.

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 utilisez une opération de sous-chaîne. N'oubliez pas que la sous-chaîne est 0 indexée.

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) paramètre ~a modificateur

Fondamentalement identique à celui de la variable FOR, excepté l’utilisation d’un paramètre de script ou de sous-routine.

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.