1
votes

Recherche de fichiers de 0 Ko dans les répertoires Windows

J'ai un répertoire, appelons-le "comptes". Il y a environ 600 dossiers de compte, et dans chacun de ces dossiers, contient un dossier «IN» (parmi beaucoup d'autres).

ex)

\\networkfolder\ACCOUNT\account1\in
\\networkfolder\ACCOUNT\account2\in
\\networkfolder\ACCOUNT\account3\in
\\networkfolder\ACCOUNT\account4\in
\\networkfolder\ACCOUNT\account5\in

Existe-t-il un moyen / commande / outil pour analyser et afficher une liste de noms de fichiers (avec leurs chemins de fichiers) dans un fichier .txt d'une taille de 0 Ko?

  1. La recherche avancée essayée dans l'Explorateur Windows prend trop de temps.
  2. J'ai examiné les scripts de commandes, je ne sais pas si cela ira mieux.

J'essaie de réduire le temps en cherchant uniquement dans les dossiers «IN» dans chacun des dossiers de compte, car ces fichiers de 0 Ko sont les seuls qui me préoccupent.


0 commentaires

3 Réponses :


0
votes

Je ne sais pas si cela peut être fait avec dir pur, mais j'ai une solution avec for:

@echo off
for /r %%S in (in\*.*) do if %%~zS==0 echo %%S is 0 bytes

Avec cela, vous bouclez pour chaque fichier dans les répertoires et sous-répertoires, et obtenez sa taille avec %% ~ zvar (dans ce cas %% ~ zS ).
Ensuite, utilisez un if pour voir si la taille est égale à 0 octet. Si c'est le cas, écho à l'écran [chemin complet du fichier] est de 0 octet .


2 commentaires

peut rendre cela un peu plus rapide avec > file.txt (pour / r% S dans (in \ *) do ...) (à partir de la question: recherche uniquement dans les dossiers 'IN' )


Notez que les balises pour cette question suggèrent que la ligne de commande [ cmd ] pas un [batch-file ].



0
votes

Cela peut probablement être fait avec une boucle FOR à une seule ligne, mais cela pourrait être plus compréhensible et maintenable dans le futur. Nécessite PowerShell 5.1+. Si vous utilisez une machine Windows prise en charge, elle aura, ou peut avoir, Windows PowerShell 5.1.

=== Get-ZeroInFileList.ps1

powershell -NoLogo -NoProfile -File "Get-ZeroInFileList.ps1"

Appelez-le comme une commande cmd.exe utilisant:

$BaseDir = 'C:\src\t'
$ResultFile = 'C:\src\t\zresult.txt'
Get-ChildItem -Recurse -Directory -Path $BaseDir -Filter 'in' |
    ForEach-Object {
        Get-ChildItem -File -Path $_.FullName |
            ForEach-Object {
                if ($_.Length -eq 0) { $_.FullName | Out-File -FilePath $ResultFile -Encoding ascii }
            }
    }


0 commentaires

0
votes

C'est le moyen le plus rapide auquel je puisse penser, si vous avez vraiment besoin d'une sortie de fichier texte aligné à gauche, et d'ignorer tous les fichiers de 0 octet pas directement dans un répertoire nommé in

%__APPDIR__%Robocopy.exe "\\networkfolder\ACCOUNT" NULL /L /Max:1 /S /NC /NDL /NJH /NJS /NS>"emptyfiles.txt"


0 commentaires