Fichier de commandes en Boucle Ignorer le Fichier si le nom contient
Je suis la création de ce fichier de commandes, qui fonctionne avec handbrakecli, par lots pour convertir avi en mp4.
Cependant, je suis coincé dans la façon de continuer la boucle et passer le fichier en cours à l'intérieur d'une boucle.
FOR /R "%somepath%" %%G in (*.avi) DO (
rem skip if filename contains word trailer
rem skip if file name contains word sample
rem do conversion
)
Cela ne fonctionne pas en ignorer les fichiers qui contiennent de la remorque ou de l'échantillon
J'ai essayé de trouver ou de findstr et les deux ne parviennent pas à ignorer.
echo "%%G" | c:\windows\system32\findstr /i "trailer" > NUL
If %ERRORLEVEL% EQU 1 set skip Yes
Voici par exemple.
echo "%%G" | c:\windows\system32\findstr /i "sample" > NUL
If %ERRORLEVEL% EQU 1 set skip Yes
Si un fichier contient une remorque ou un échantillon, je ne veux pas faire handbrakecli conversions, mais de simplement les ignorer.
Je fais echo pour afficher les fichiers convertis, et cela ne comprend pas les fichiers avec l'Échantillon ou de l'échantillon dans le nom.
J'ai essayé de trouver ou de findstr et les deux ne parviennent pas à définir passer à oui
si skip == Pas de le faire ( rem faire la conversion )
Je veux seulement convertir les non-remorque/échantillon des fichiers avi.
Je vous remercie pour votre temps.
Aussi vraiment une question stupide, ne sais pas pourquoi, mais je suis dans l'obligation de toujours spécifier le chemin pour trouver ou findstr, et est-ce une erreur de chemin d'accès, ou quoi? Juste curieux.
OriginalL'auteur crosenblum | 2013-06-03
Vous devez vous connecter pour publier un commentaire.
essayez cela, mettez votre conversion commandes dans la boucle et de supprimer le mot
echo
avant handbrakecli si la sortie est OK:Le nom de fichier+chemin d'accès au fichier est dans la variable
"!fpath!"
.Ajouté un peu de code concernant les besoins de l'OP:
J'ai fait un edit: 1) mettre un journal de commande 2) correction d'un bug (mis endlocal après la première date de clôture des parenthèses)
Vérifier mon pastebin, pour voir le code, je suis en utilisant combinée avec le code que vous avez suggéré. J'ai déjà eu du fichier journal des commandes, à l'aide du journal, de la poignée de la suppression des fichiers. C'est comme 90% terminé, et je vous remercie beaucoup pour votre information. Maintenant deux choses à gauche, à la limite de la boucle pour seulement un nombre x de fois, alors que je n'ai pas surcharger mon pc conversion de trop, et la manipulation des noms de fichier avec des caractères inhabituels, tels que les langues asiatiques. Toutes les pensées?
faites un montage et inséré votre code avec quelques améliorations.
Je reçois quelques messages d'erreur que de dire que Le système ne peut pas trouver le chemin d'accès spécifié. Aussi, il crée le fichier de commandes, mais ajoute une ligne vide au très haut au-dessus de l'echo off instruction. Ce qui est une manière acceptable de vous offrir du crédit et merci pour votre aide. J'ai l'intention de mettre ce que un bundle sur github, pour aider les gens à convertir progressivement leurs films/séries tv au format mp4. Comment préféreriez-vous être mentionné?
OriginalL'auteur Endoro
Cela devrait fonctionner:
findstr
peut être plus lent queif ... if...
. Et%%G
contient le chemin d'accès complet.Merci pour vos commentaires - je l'ai remplacé par
%%~nG
. Findstr sera certainement plus lent, mais je soupçonne que chaque AVI encoder prendra plus d'une heure, le temps n'est pas un facteur. 🙂OriginalL'auteur foxidrive
Il est difficile de voir où votre post est pseudocode et où le code réel.
Le premier échantillon ne contient que des
REM
états, il n'est donc pas surprenant apparemment, il ne fait rien.Votre deuxième et troisième échantillon sont effectivement identiques, la seule différence est la chaîne cible. Il n'est pas surprenant que la variable
skip
n'est pas leYes
depuis la syntaxe correcte estLa syntaxe que vous avez posté aura
REPORT
queskip
n'est pas défini, il ignore laYes
HOWEVER
cette syntaxe n'est utilisable qu'OUTSIDE
d'un"block statement"
- qui est un multiple instruction de déclaration (entre parenthèses) ou en cascade&par&arobases. Lot de premièrePARSES
un énoncé complet - à partir duFOR
ouif
grâce à la appropriée de fermeture de la parenthèse etTHEN
l'exécute. Dans le cadre de laPARSING
phase, tout%var%
- y compris%errorlevel%
est remplacé par sa valeur en tant qu'il signifie à la fois l'intégralité de la déclaration estparsed
- pas de modifications en raison de l'exploitation de lafor
.Afin d'utiliser la valeur de l'évolution, vous avez besoin d'utiliser
où
do_something
etdo_something_else)
peuvent eux-mêmes être composé consolidés.OU
où la variable est définie ou non
OU
OU
Mais c'est tout à fait possible que
vous donnera un approprié squelette.
Echo le nom de fichier par le biais de
FINDSTR
et recherchez "échantillon" ou "remorque"/i
insensibles à la casse. Findstr met errorlevel 0 si l'une des cibles de la chaîne est trouvée, 1 dans le cas contraire - et laif errorlevel x
syntaxe fonctionne sur la dynamique de la valeur deerrorlevel
l'intérieur d'une boucle.OriginalL'auteur Magoo
OriginalL'auteur slyfox1186
Le fichier de commandes ci-dessous résoudre la question d'origine ET de limiter le nombre de fichiers convertis à un nombre donné (qui n'apparaît pas dans la question d'origine):
OriginalL'auteur Aacini