Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Ошибка в синтаксисе команды

Ответить
Настройки темы
CMD/BAT - [решено] Ошибка в синтаксисе команды

Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Не могу найти вышеупомянутую ошибку. В коротком батнике:
читать дальше »
Код: Выделить весь код
@echo off

if defined %programfiles(x86)% (
    if exist "%programfiles(x86)%\Mozilla Firefox\firefox.exe" (
        echo Come on...
        pause
        exit
    )
)

echo Come on 2...
pause

Ошибка на XP, построчная копипаста (в учетом пробелов) в cmd проблем не выявляет.

И еще - есть для bat какие-нибудь расширенные средства отладки (хотя бы bash -x).

Отправлено: 07:08, 21-06-2014

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Попробуйте так:

Код: Выделить весь код
@echo off

Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86 

if %xOS%==x64 (
    if exist "%programfiles(x86)%\Mozilla Firefox\firefox.exe" (
        echo Come on...
        pause
        exit
    )
)

echo Come on 2...
pause

Отправлено: 13:34, 21-06-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата gora:
Попробуйте так »
Работать-то работает, только мне интересно, где ошибка синтаксическая. Учитывая, что вариант без проверки разрядности и определена ли переменная, хоть и не красиво, но работает также.

Отправлено: 07:26, 23-06-2014 | #3


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата User001:
где ошибка синтаксическая »
Переменной %programfiles(x86)% на XP x86 не существует и она не раскрывается в определенный путь. Кроме этого имя переменной содержит скобки.
Такая не раскрывающаяся переменная помещенная в строку:
Код: Выделить весь код
if defined %programfiles(x86)% (
вызывает синтаксическую ошибку на х86 системах.

Отправлено: 07:51, 23-06-2014 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Там ещё интереснее — в «if defined Var» не нужно раскрывать переменную, т.е. обрамлять её символами раскрытия («%» или «!»).
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:20, 23-06-2014 | #5


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата gora:
вызывает синтаксическую ошибку на х86 системах »
Проблема в том, что в cmd не вызвает и, более того, даже работает как надо (условие ложно).
Цитата Iska:
Там ещё интереснее — в «if defined Var» не нужно раскрывать переменную, т.е. обрамлять её символами раскрытия («%» или «!»). »
Вовремя
Цитата gora:
Переменной %programfiles(x86)% на XP x86 не существует и она не раскрывается в определенный путь »
Так в чем смысл defined тогда? Я как раз и думал, чтобы проверять "объявленность" переменной.

Отправлено: 09:15, 23-06-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


«if defined …» работает без раскрытия. Например, вот так:
Код: Выделить весь код
if defined FARHOME echo Command processor running under Far Manager.
Или вот так (таким образом я проверяю наличие первого аргумента у командного файла):
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=%~1

if not defined sSourceFile (
	echo Need path to source file.
	echo.
	echo Usage: %~nx0 ^<Source file^>
	exit /b 1
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:00, 23-06-2014 | #7


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off &setlocal enableextensions

set "Var="
if defined Var (echo Defined) else (echo Not defined)
pause
set "Var=Value"
if defined Var (echo Defined) else (echo Not defined)
pause

if defined %Var% (echo Defined) else (echo Not defined)
pause
set "Value=Another Value"
if defined %Var% (echo Defined) else (echo Not defined)
pause
както так
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:28, 23-06-2014 | #8


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


И еще - какие-то расширенные средства для написания / отладки батников бывают (ну, кроме подсветки синтаксиса ).
Например, благодаря коду Iska, познакомился с SetLocal и расширенная обработка команд.

Отправлено: 05:22, 24-06-2014 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


У меня это «echo» и «rem», вставляемый перед «@echo off».

Отправлено: 08:39, 24-06-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Ошибка в синтаксисе команды

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Привводе команды sfc /scannow выходит ошибка лог прилагаеться vitvjach Microsoft Windows 7 7 15-11-2020 20:44
Установка - [решено] MS Office: Ошибка при направлении команды приложению ameds Microsoft Windows 7 29 21-03-2019 14:59
Офис и Текст - Ошибка Excel2003.выскакивает ошибка при направлении команды приложению. kuka58 Microsoft Office (Word, Excel, Outlook и т.д.) 2 09-04-2013 19:38
2007 - Ошибка в Направлении Команды Приложению MICROSOFT OFFICE 2007 monster Microsoft Office (Word, Excel, Outlook и т.д.) 2 22-04-2011 12:22
Ошибка - Ошибка команды свойств файлов 8Toxa8 Microsoft Windows 2000/XP 2 10-10-2010 13:41




 
Переход