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é?

xplusplus
la source
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.

Zulgrib
la source
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
dbenham
la source