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

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

Ответить
Настройки темы
CMD/BAT - [решено] Использование exe-файла, описанного полным путём, в For

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls

Set "Arc=%ProgramFiles%\WinRar\rar.exe"

FOR /F "usebackq delims=" %%i IN (`"%Arc%" /?`) DO Echo %%i
pause
Работает успешно. При замене For
Код: Выделить весь код
FOR /F "usebackq delims=" %%i IN (`rar.exe a "1 2 3.rar"`) DO Echo %%i
тоже батник отрабатывает успешно (при условии, что rar.exe система находит).
Код: Выделить весь код
FOR /F "usebackq delims=" %%i IN (`"%Arc%" a "1 2 3.rar"`) DO Echo %%i
Вот этот вариант работать не хочет - сообщение "C:\Program" не является .....
Как надо сделать? Мне нежелательно чтобы exe-файл указывался не по полному пути.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 22:06, 29-03-2015

 

Ветеран


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

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


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

set "path=%path%;%ProgramFiles%\WinRar"

for /f "tokens=*" %%i in (' rar a "1 2 3.rar" ') do echo %%i
ЗЫ. А что добавляется в "1 2 3.rar" и, зачем запихивать в for?
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:43, 30-03-2015 | #2



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

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


Ветеран


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

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


Цитата Foreigner:
и, зачем запихивать в for? »
Присоединюсь к вопросу.

Отправлено: 01:54, 30-03-2015 | #3


Ветеран


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

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


megaloman, Foreigner, Iska, тут проблема теоретическая. Поскольку команда, результат выполнения которой разбирается с помощью "for" (в данном случае этой командой является
Код: Выделить весь код
"%Arc%" a "1 2 3.rar"
),
выполняется в новой копии интерпретатора командной строки, запущенной с ключом "/C" (то есть командная строка запуска данного процесса выглядит так:
Код: Выделить весь код
"C:\Windows\System32\cmd.exe" /c "C:\Program Files\WinRar\rar.exe" a "1 2 3.zip"
),
то и обработка символов кавычек ведётся командой "CMD" и подчиняется правилам из справки по команде "CMD", что и приводит к ошибке.



Выход из этой ситуации такой:
Код: Выделить весь код
for /f "usebackq delims=" %%i in (`""%Arc%" a "1 2 3.zip""`) do echo %%i
,
где "подразборная" команда будет запускаться командной строкой
Код: Выделить весь код
"C:\Windows\System32\cmd.exe" /c ""C:\Program Files\WinRar\rar.exe" a "1 2 3.zip""
.

Последний раз редактировалось Georgio, 30-03-2015 в 14:29.

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

Отправлено: 03:01, 30-03-2015 | #4


Ветеран


Contributor


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

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


Iska, тут проблема теоретическая. На самом деле в rar мне нужна команда LB - то есть, мне нужно получить список файлов в архиве. А еще точнее, надо определить - файл архив или нет, так как приходят файлы не со стандартным расширением архива. Спасибо Georgio и всем кто принял участие.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 30-03-2015 в 09:21.


Отправлено: 09:05, 30-03-2015 | #5


Ветеран


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

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


Цитата megaloman:
А еще точнее, надо определить - файл архив или нет »
Слишком сложный путь выбран. Если Вам на самом деле не нужно содержимое архива, то:
Код: Выделить весь код
"C:\Program Files\WinRAR\RAR.exe" t "Путь\Архив или ЯкобыАрхив.xxx" && echo Это архив || echo Это не архив, либо битый архив
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:11, 30-03-2015 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Использование файла настроек для HoboCopy O L E G Скриптовые языки администрирования Windows 6 27-03-2014 14:57
VBS/WSH/JS - [решено] VBS Использование данных из файла Elven Скриптовые языки администрирования Windows 2 09-01-2014 18:35
CMD/BAT - Использование имени файла для правки в теле файла. xkafkax Скриптовые языки администрирования Windows 8 20-07-2013 11:06
CMD/BAT - [решено] Изменение файла и его использование в *bat Partiship Скриптовые языки администрирования Windows 14 01-04-2013 18:59
Использование в ГУИ ВМР файла с альфа каналом crashtuak AutoIt 0 08-08-2009 19:16




 
Переход