Использование EnableDelayedExpansion для подсчета в цикле FOR - PullRequest
0 голосов
/ 04 августа 2020
set /a n=1
for %%i in (*.mkv) do (
    for %%j in ("A:\Downloads\AoD\AoD (%n%)\*.*") do (
        mkvpropedit "%%i" --add-attachment "%%j"
        )
    set /a n+=1
    )

Я хочу написать сценарий, который присоединяет содержимое n-й папки в "A:\Downloads\AoD\AoD (%n%)\*.*" к n-й .mkv. Вышеупомянутый сценарий не работал, потому что, очевидно, весь FOR l oop оценивается перед выполнением. Наткнувшись на этот вопрос , я переписал свой скрипт следующим образом:

setlocal enabledelayedexpansion
set /a n=1
for %%i in (*.mkv) do (
    for %%j in ("A:\Downloads\AoD\AoD (!n!)\*.*") do (
        mkvpropedit "%%i" --add-attachment "%%j"
        )
    set /a n+=1
    )
endlocal

, но он почему-то все еще не работает. n увеличивается, но, по-видимому, !n! не интерпретируется как переменная, а скорее как строка !n!, потому что это то, что мне сообщает cmd

B:\AoD try>(
for %j in ("A:\Downloads\AoD\AoD (!n!)\*.*") do (mkvpropedit "AoD (1).mkv" --add-attachment "%j" )
 set /a n+=1
)
2
B:\AoD try>(
for %j in ("A:\Downloads\AoD\AoD (!n!)\*.*") do (mkvpropedit "AoD (2).mkv" --add-attachment "%j" )
 set /a n+=1
)
3
B:\AoD try>endlocal

Этот результат от меня, использующего скрипт путем вставки это прямо в командную строку с одним % s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...