2

При написании пакетных циклов FOR я приобрел привычку использовать tildes в именах переменных переменных в командной части скрипта и заключать их в двойные кавычки.

Пример синтаксиса

FOR %%A IN ("*.*") DO ECHO "%%~A"

причина

Я обычно пишу такие сценарии как стандарт, независимо от того, действительно ли они нужны без раздумий. Мне нравится, как он удаляет двойные кавычки из set части цикла, а затем явно добавляет их обратно в часть command parameter команды цикла.

Вопрос

По некоторым причинам из опыта других или, возможно, где-то официально задокументировано, почему вы захотите или не захотите использовать tildes по этой причине с циклами FOR через cmd или batch.

1 ответ1

1

В вашем конкретном случае это не имеет значения, но и не наносит вреда:

  • поскольку имена файлов, повторяемые с помощью символа подстановки, всегда возвращаются без кавычек.

При переборе некоторых строк в двойных кавычках (особенно строковых аргументов cmd %*)
Я бы всегда использовал их:

@Echo off
For %%A IN (
    "this is a sentence"
    two words
    "some words"
) Do (
    Echo with tilde: "%%~A"
    Echo w/o  tilde: "%%A"
    Echo:
)

> SU1397704.cmd
with tilde: "this is a sentence"
w/o  tilde: ""this is a sentence""

with tilde: "two"
w/o  tilde: "two"

with tilde: "words"
w/o  tilde: "words"

with tilde: "some words"
w/o  tilde: ""some words""

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .