MS DOS script pour DIR 10 premiers fichiers uniquement, par ordre décroissant
Je suis en utilisant dir abc*.*/o:-d/b >> "testfile1.txt"
pour obtenir la sortie dans l'ordre décroissant. Est-il possible d'obtenir uniquement 5 /10 fichiers en sortie. En fait, je veux stocker plus tard 5 (triés par Date de modification) des fichiers dans testfile1.txt.
Remercie de votre réponse
OriginalL'auteur user1594788 | 2012-08-13
Vous devez vous connecter pour publier un commentaire.
J'ai volontairement diviser par 0 pour détecter le moment où la limite a été atteinte. Je pourrais simplement utiliser une instruction if au lieu de cela, mais cela nécessiterait l'expansion retardée, et l'expansion retardée pourrait corrompre un nom de fichier qui contient
!
. Une solution adéquate avec l'expansion retardée devez activer /désactiver expansion retardée sur et en dehors à l'intérieur de la boucle.OriginalL'auteur dbenham
Je sais que je suis un peu en retard sur ce point, mais comment à ce sujet:
Voici ce que j'ai fait pour faire ce travail:
abc*.*/o:-d/b | findstr /n .)
ligne distincte #'s de contenu (à l'aide de "tokens=1*
delims=:")
Edit: changé " findstr /n .*' 'findstr /n .', comme il n'y a pas de lignes vides trop regarder (voir les commentaires ci-dessous).
.
. L'astérisque n'est pas nécessaire 🙂Merci @dbenham. Cependant, quand je suis la pipe d'un fichier dans findstr, les lignes vides sont ignorées avec juste
.
. Je crois que j'ai besoin de la star de modifier ce dernier à " zéro ou plusieurs résultats. J'ai peut-être de modifier la méthode ci-dessus, de toute façon, il va s'étouffer sur les lignes qui commencent avec des virgules (@Jeb dit dans un autre thread). À la recherche d'une solution pour que maintenant...Oui, mais dans ce cas, nous n'avons pas à vous soucier des lignes vides. Les données proviennent de
DIR /B
, pas un fichier. Ainsi, le*
n'est pas nécessaire. Aussi, vous n'avez pas besoin de vous soucier de lignes commençant par le caractère de fin de ligne (;
par défaut) parce que vous savez que chaque ligne commence par un chiffre.Ah, excellent point (pas de lignes vides envoyés à partir de
dir
). Sur le caractère de fin de ligne... ce que je voulais dire, c'est du côlon délimiteur que j'utilise pour séparer les numéros de ligne du contenu (ajouté parfindstr
). Parce que la boucle for s'effondre séparateurs consécutifs dans l'un, les lignes qui commencent par un signe deux-points aura le deux-points dépouillé par mon code ci-dessus. Votre point est toujours valide ici: aucune des lignes à partir d'undir /b
sortie de commencer (ou même contenir) des deux points.OriginalL'auteur Seth McCauley
Cette ont un fichier batch? Ce serait trivial dans PowerShell.
De le faire avec un bon vieux fichiers par lots, vous aurez besoin de quelque chose de semblable à la tête de l'utilitaire, de saisir uniquement les premières lignes de sortie.
Vous pouvez adapter la solution à vos besoins (note de la section dans la réponse au sujet de la petite "winhead.cmd" script):
Commande de traitement par lots pour prendre seule la première ligne de l'entrée
OriginalL'auteur dodexahedron