2016-04-11 2 views
1

Je suis en train de convertir un dossier de fichiers SWF en images à l'aide de swftools. La conversion proprement dite fonctionne correctement, mais j'ai des problèmes pour l'exécuter sur tous les fichiers d'un dossier. (et serait bien de le faire fonctionner pour tous les sous-dossiers aussi).Batch effectuer une action sur tous les fichiers dans dir - mauvaise valeur de la variable?

Disons que le dossier contient les fichiers suivants: 1.swf, 2.swf, ... Maintenant le script que j'ai écrit pour cela est:

for %i in (*.swf) do (
set fileName=%i 
swfrender "%fileName%" -o "%fileName:~0,-4%.png" 
) 

Ce que je suis en cours d'exécution à l'intérieur du dossier contenant les fichiers SWF. Cependant, plutôt que le résultat attendu que je vois ce qui suit dans mon invite de commande:

set = fileName 1.swf swfrender "3.swf" -o "3.png")

set = fileName 2.swf swfrender « 3.swf » -o « 3.png »)

maintenant de ce que je pouvais trouver le script devrait être bien, donc je n'ai aucune idée de ce qui ne va pas.

Étrangement la suivante ne semble fonctionner:

for /R %x in (*.swf) do swfrender %x -o %x.png 

Mais je préfère ne pas avoir à renommer quelques centaines de fichiers pour enlever la partie .swf redondante du nom de fichier.

Répondre

2

vous avez besoin delayed expansion (et dans des fichiers batch dont vous avez besoin doublez % pour les jetons de boucles):

setlocal enableDelayedExpansion 
for %%i in (*.swf) do (
    set fileName=%%i 
    swfrender "!fileName!" -o "!fileName:~0,-4!.png" 
) 

ou vous pouvez extraire le nom de fichier sans extension:

for %%i in (*.swf) do (
    swfrender "%%~i" -o "%%~ni.png" 
) 
+0

deux semblent conduire à : bla \ swfFolder> pour %% i in (* .swf) faire ( %%) était inattendu à ce moment Si je l'essaye avec% i plutôt que %% i il semble qu'il utilise le! nomFichier! comme ça plutôt que le pertinent valeur malgré l'extension du délai d'activation. –

+0

@JoeDaenens - Si vous exécutez cette commande à partir de la ligne de commande, vous devrez utiliser un seul '%'. Si c'est dans un fichier batch, il faut le doubler. – npocmaka

+1

+1 pour éviter une expansion retardée dans votre seconde approche! Cependant, vous n'avez pas besoin de la variable interim 'fileName'. – aschipfl