ошибка сравнения содержимого файла в пакетном режиме Windows

#windows #batch-file #cmd

#Windows #пакетный файл #cmd

Вопрос:

У меня есть текстовый файл с именем «isUp.o», содержащий ошибку результата подключения, например «НЕУСТРАНИМАЯ ОШИБКА: ошибка сети: время ожидания подключения истекло». Я просто хочу проверить это и изменить переменную ip на новое значение ip, но я получаю следующее сообщение на испанском

 No se esperaba "FATAL ERROR: Network error: Connection timed out" en este momento.
d:> if [ "FATAL ERROR: Network error: Connection timed out" <> "" ] (
  

перевод может быть:

 Not waited "FATAL ERROR: Network error: Connection timed out" at this moment.
  

Я не знаю, в чем проблема.

 for /f "delims=" %%j in (isUp.o) do (
 set /p result=%%j
 if [ "%result%" <> "" ] (
   set Ip=%alternativeIp%
 )
)
  

Комментарии:

1. К сожалению, недостаточно подробностей для правильного решения. Вы ищете возможно пустой файл или, возможно, несуществующий файл? Какое содержимое может находиться в файле и что вы хотите сделать при каких обстоятельствах?

2. Magoo: содержимое файла «НЕУСТРАНИМАЯ ОШИБКА: Сетевая ошибка: время ожидания подключения истекло»

Ответ №1:

Эта строка не соответствует синтаксису пакетного файла

  if [ "%result%" <> "" ] (
  

Скобки являются синтаксисом командной строки unix и не работают в пакетном режиме. Кроме того, в пакетном режиме отсутствует <> оператор.

Нужная строка

  if not "%result%"=="" (
  

Комментарии:

1. Это не так. Требуемая строка является, if not defined result поскольку [not] defined работает со run-time значением переменной, но поскольку оно задано внутри блока, вам потребуется !result! получить доступ к значению во время выполнения и вызвать delayed expansion . Кроме того, /p синтаксис в наборе` неверен, поскольку при этом пользователю будет предложено ввести данные. Лучше вообще оставить set out и использовать if "%%j"=="somestring" BUT %%j никогда не будет пустым — если строка пуста, то for/f строка будет пропущена — эта итерация просто не будет выполнена. Комментарий к if синтаксису является допустимым.

2. @Magoo Спасибо за объяснение. Я не просматривал все это целиком; только одну строку с синтаксической ошибкой. Если вы добавите все это в ответ, я бы поддержал его.

3. Спасибо за ответ.