«for / f» не устанавливает переменную с помощью командного файла cmd.exe - PullRequest
1 голос
/ 17 октября 2011
rmtshare \\server\sharename$ | for /f "tokens=3,4,5 delims=\" %%A in ('find "Path"') DO 
SET path1=%%A\%%B\%%C
echo %path1%

Он будет делать все до заданной области. Я хочу выбрать физический путь к ресурсу и превратить его в переменную для последующего использования. Мой подход не работает, я не знаю, что мне не хватает.

Ответы [ 3 ]

0 голосов
/ 04 июля 2012

Я считаю, что SET не является постоянным, вы должны использовать SETX, чтобы установить переменную в командной строке и оставить ее вне сеанса CMD. На самом деле, SETX является родным для Windows 7, но доступно в наборах ресурсов для более старых версий Windows.

0 голосов
/ 25 июля 2012

Вам необходимо включить usebackq в ваши параметры, например, так:

for /f "usebackq tokens=3,4,5 delims=\" %%A in ...
0 голосов
/ 17 октября 2011

Убедитесь, что команда, которую вы хотите запустить в цикле FOR, находится в одной строке (например, for /f ... do set path1=%%A\%%B\%%C или, если у вас несколько команд, они сгруппированы в скобках, например:

for /f ... do (
  echo "Setting path1"
  set path1=%%A\%%B\%%C
)
...

(Кроме того, у вас установлено SETLOCAL EnableDelayedExpansion? Если это так, вам может понадобиться использовать !path1! вместо %path1%.)

...