Показать полную графическую версию : [решено] Использование exe-файла, описанного полным путём, в For
megaloman
29-03-2015, 22:06
@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-файл указывался не по полному пути.
Foreigner
30-03-2015, 00:43
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?
и, зачем запихивать в for? »
Присоединюсь к вопросу.
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"".
megaloman
30-03-2015, 09:05
Iska, тут проблема теоретическая. На самом деле в rar мне нужна команда LB - то есть, мне нужно получить список файлов в архиве. А еще точнее, надо определить - файл архив или нет, так как приходят файлы не со стандартным расширением архива. Спасибо Georgio и всем кто принял участие.
А еще точнее, надо определить - файл архив или нет »
Слишком сложный путь выбран. Если Вам на самом деле не нужно содержимое архива, то:
"C:\Program Files\WinRAR\RAR.exe" t "Путь\Архив или ЯкобыАрхив.xxx" && echo Это архив || echo Это не архив, либо битый архив
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.