Est-il possible d'utiliser FINDSTR avec une variable au lieu d'un fichier?Comment utiliser FINDSTR pour trouver une chaîne dans la valeur d'une variable?
J'ai essayé de faire des recherches sur ce sujet, mais mes connaissances sur les lots ne sont pas encore suffisantes.
J'ai fait en sorte que la plupart de mes fichiers batch fonctionnent parfaitement pour ce dont j'ai besoin, mais j'ai du mal à extraire une partie d'une variable chaîne en une nouvelle variable.
La variable d'origine par exemple serait S02E12 - Charge!
. Je voudrais extraire 02
à ep_seas
, 12
à ep_num
, et Charge!
à ep_name
. Je l'ai fonctionné maintenant si c'est le modèle exact de noms, mais j'ai rencontré quelques fichiers qui sont dans ce modèle: S02E124 - Charge #2!
Y at-il un moyen que je peux obtenir dynamiquement les valeurs dont j'ai besoin indépendamment de leur longueur?
Mon idée était d'utiliser FINDSTR pour rechercher entre le S
et le E
, puis entre E
et de l'espace
(ou -
), puis entre -
et la fin. Je ne suis pas sûr de savoir comment je vais procéder avec ça.
Quelqu'un at-il une solution que je peux examiner ou quelqu'un peut-il donner un exemple?
setlocal DisableDelayedExpansion
set mkvmerge="C:/Program Files/MKVToolNix/mkvmerge.exe"
set "output_folder=%cd%\Muxing"
for /r %%a in (*.mkv) do (
set fi=%%a
set ep=%%~na
call :merge
)
goto :eof
:merge
set ep_name=%ep:~9%
set ep_num=%ep:~4,2%
set ep_seas=%ep:~2,1%
call %mkvmerge% -o "%output_folder%\%ep%.mkv" --track-name "0:%ep_name%" --language 0:und --default-track 0:yes --track-name "1:[JAP]" --language 1:jpn --default-track 1:yes --track-name "2:[ENG]" --language 2:eng --default-track 2:yes --forced-track 2:yes "%fi%" --track-order 0:0,0:1,0:2 --title "Fate Zero - Episode %ep_num%"
goto :eof
Lit la commande 'FOR/F' et l'option' DELIMS'. – Squashman