Я пытаюсь использовать команду FOR в командной строке Windows XP. У меня есть файл temp.txt с 3 строками:
temp1
temp2
temp3
И я ввожу следующую команду при подсказке:
for /F %p in (temp.txt) do echo Testing %p
Ничто не возвращается. Если я удаляю/F параметр, вывод Testing temp.txt
.
Насколько я могу определить, я использую команду точно, поскольку она документируется Microsoft. Я проверил свой реестр, чтобы удостовериться, что Расширения Команды идут и даже запустили новую оболочку с cmd /e:on
быть вдвойне уверенным.
Что я делаю неправильно?
Да, я делал что-то не так.
Файл temp.txt не был создан с нуля, я просто, отредактировал его, чтобы вставить мое содержание тестирования. К сожалению, когда я создал файл в первый раз, когда я сохранил его с маркером UTF-8 в передней стороне. При воссоздании файла, поскольку простой текст решил проблему.
Я предполагаю, что это - желаемый результат:
H:\>for /F %p in (temp.txt) do echo Testing %p
H:\>echo Testing temp1
Testing temp1
H:\>echo Testing temp2
Testing temp2
H:\>echo Testing temp3
Testing temp3
Если так, Вы тестировали другие пакетные файлы, или Вы перенаправили ввод/вывод? При выполнении этого как части большего проекта Вы, возможно, изменили разделители или параметр пропуска к команде FOR? Действительно ли возможно, что существуют непечатаемые символы перед Вашим файлом temp.txt? Я заставил это работать над несколькими различными компьютерами, включая 2k3 поле Станд. Сервера... Я не могу не думать, что существует или проблема с Вашим входным файлом или значения по умолчанию, устанавливаемые без Вашего ведома.
Вместо того, чтобы тестировать с echo
, который просто берет имена в наборе как есть (даже если файл не существует), попробуйте что-то как type
:
for %p in (temp.txt) do type %p
Это покажет Вам, что "видит" оболочка. (Обратите внимание, что/F с несуществующим файлом будет жаловаться на не нахождение файла, но возможно у Вас есть больше чем один temp.txt вокруг?)