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?
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.
3 Réponses :
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
.
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 ].
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 } } }
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"