У меня есть длинный путь к программе, которую я должен запустить в for / f, который включает закрывающую круглую скобку ")", и из которого мне нужно проанализировать вывод:
for /f "tokens=1" %%G in ('"C:\Documents and Settings\myaccount\Desktop\Test_release (x86)\program.exe" list') do (echo Will do something with %%G)
... где 'list' - параметр, переданный моей программе. Я получаю сообщение об ошибке "'C: \ Documents 'не распознается как внутренняя или внешняя команда, действующая программа или пакетный файл. "
Я знаю проблема в том, что закрывающая скобка фактически закрывает блок" for ", поэтому конечные двойные кавычки не являются "замечено", поэтому длинное имя пути больше не заключено в двойные кавычки. Я не понимаю , почему это происходит, поскольку мой путь заключен в двойные кавычки? Я также попробовал опцию usebackq :
for /f "usebackq tokens=1" %%G in (`"C:\Documents and Settings\myaccount\Desktop\Test_release (x86)\program.exe" list`) do (echo Will do something with %%G)
... без лучших результатов. Я пытался сбежать вот так «^)» или вот так «^^)», делать нечего. Пробовал удваивать двойные кавычки:
for /f "tokens=1" %%G in ('""C:\Documents and Settings\myaccount\Desktop\Test_release (x86)\program.exe"" list') do (echo Will do something with %%G)
По-прежнему не работает.
Кроме того, я фактически использую переменную, которая содержит путь, который заранее не известен (построенный из% CD%), и активируется EnableDelayedExpansion . Я попробовал отложенное расширение (которое устранило аналогичные проблемы в других ситуациях), чтобы предотвратить расширение переменной во время чтения и отложить его во время выполнения:
setlocal EnableDelayedExpansion
set _var=%CD%\program.exe
@REM _var now contains C:\Documents and Settings\myaccount\Desktop\Test_release (x86)\program.exe
for /f "tokens=1" %%G in ('"!_var!" list') do (echo %%G)
endlocal
По-прежнему не работает, не понимаю, почему.
Но , удвоение двойных кавычек с отложенным раскрытием в приведенном выше коде:
for /f "tokens=1" %%G in ('""!_var!"" list') do (echo %%G)
действительно работает! ... зачем ... зачем это делать ??? Какой эффект от этого? Я не понимаю. Я также боюсь, что это может вызвать проблемы при определенных обстоятельствах ...
Есть идеи?