Boucle de ligne de commande pour exécuter la commande sur tous les fichiers d'un répertoire (plus les sous-répertoires, si possible

14

Je suppose que c'est assez facile à faire, mais je n'ai aucune expérience avec les utilitaires de ligne de commande de Windows. Fondamentalement, je dois parcourir tous les fichiers d'un répertoire (idéal s'il peut faire des sous-répertoires, mais je peux l'exécuter sur chacun des 5 répertoires si nécessaire), obtenir le nom en tant que variable et le faire exécuter

"C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
   -colorspace Gray -colors 32 file_var file_var

J'ai vu les fichiers nommés dynamiquement dans une invite de commande pour la boucle . Serais-je capable de l'utiliser (en échangeant le SET ... avec la commande ci-dessus)? L'espace sur l'ordinateur en question est au-delà des limites donc je ne peux pas effectuer de sauvegarde avant de l'exécuter à ce stade (mauvais, je sais).

Robert
la source
Robert, si vous avez réussi à répondre à votre propre question, veuillez ajouter votre propre réponse et l'accepter comme la bonne.
Julian Knight
Je ne pense pas que ce soit tout à fait ce que vous voulez, la fin de celui-ci ( "%%f" "%%f") placera simplement le nom de fichier (avec un chemin complet) deux fois. Vous voudrez probablement utiliser quelque chose comme "%%f" "%%~dpnf.gif"pour changer l'extension du fichier de sortie.
Synetech
@JulianKnight - merci, j'ai en fait tenté de revenir en arrière quand, mais je pense qu'il y a eu une attente forcée pour ce faire. J'ai oublié la question depuis.
Robert

Réponses:

5

Ouvrez PowerShell

$files = Get-ChildItem -Recurse 
foreach ($file in $files){
    c:\windows\System32\notepad.exe $file.FullName
}

Get-ChildItem récupère une liste de fichiers en tant qu'objets du sous-répertoire actuel. "-recurse" inclura des sous-répertoires. Cela le place dans un tableau $ Files.

La boucle foreach parcourt chaque fichier et appelle le bloc-notes avec l'argument de ligne de commande du chemin d'accès complet au nom de fichier de chaque fichier.

ATTENTION: testez le code ci-dessus dans un répertoire contenant quelques petits fichiers texte, car il ouvrira une instance du Bloc-notes pour chaque fichier.

Cela devrait vous donner une idée de la façon dont vous allez faire ce que vous cherchez à faire.

Au revoir
la source