#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. Спасибо за ответ.