Старый пост я знаю и по какой-то причине проблема была вызвана Ансиконом? Я получаю тот же результат, что вы впервые опубликовали без этой программы, и правильное объяснение, если вы хотите, чтобы оно повторяло все слова, заключается в том, что вам нужно указать токены, так как каждое повторяемое слово будет одним токеном и без указания количества токенов будет отображаться только первый токен. Добавьте это "tokens = *" в оператор FOR / F, как показано ниже.
@echo off
echo b>b.txt
for /f "tokens=*" %%A in ('echo b.txt b.txt') do (
echo %%A
if not exist %%A (
echo does not exist.
) else (
echo %%A exist.
)
)
Это будет производить это:
echo b.txt b.txt
does not exist.
Таким образом, он никогда не найдет файл с именем "b.txt b.txt", поскольку именно так будет переведен %% A.
Но если цель состояла в том, чтобы повторить все слова после эха и проверить наличие b.txt, тогда это сработает
@echo off
echo b>b.txt
for /f "tokens=*" %%A in ('echo b.txt b.txt') do (
echo %%A %%B
if not exist %%A (
echo does not exist.
) else (
echo %%A exist.
)
)
Вывод, который я получаю сверху:
b.txt b.txt
b.txt exist.
Я не уверен, что сценарий должен был выполнить, так что, возможно, это вообще не помогло.