Я получил первый эмпирический ответ:
for /f %%s in (version.txt) do ...
отлично работает на любом компьютере.
Кажется, for /f
работает с именем файла, а не с любой командой dos, такой как 'type filename'.
Однако это не относится ко всем компьютерам моего клиента (в некоторых случаях «имя файла типа» работает нормально)
Если вы хотите 15 (легко?) Баллов ;-), вы можете оставить ответ на вопрос:
почему 'for / f' иногда не работает ни с чем, кроме имени файла. И почему он просто закрывает сеанс DOS?
Редактировать: 3 года спустя (!), barlop столкнулся с аналогичной ситуацией, подробно изложенной в вопросе "for /f
немедленно закрывает приглашение cmd? ". Его вывод был:
COMSPEC
вошел в список при выполнении SET
+ ENTER .
Итак, я открыл окно переменных среды и увидел, что COMSPEC
не указано в списке пользовательских или системных переменных. Я добавил его в системные переменные, запустил командную строку и, похоже, работает нормально.
Эта ветка на форуме ss64 , упомянутая Andriy M в ответе на вопрос Барлопа, содержит детали.
Обстрел в цикле "for
" для завершения 'dir
' (или любой другой команды, которую вы просили выполнить) требует установки ComSpec
для перезагрузки окна cmd
.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\ComSpec=
%SystemRoot%\system32\cmd.exe