“for / f”不使用cmd.exe批处理文件设置变量

时间:2011-10-17 12:23:34

标签: windows-xp cmd

rmtshare \\server\sharename$ | for /f "tokens=3,4,5 delims=\" %%A in ('find "Path"') DO 
SET path1=%%A\%%B\%%C
echo %path1%

它将完成设定区域的所有操作。我想取出共享的物理路径并将其转换为稍后要使用的变量。我的方法不起作用,我不知道我错过了什么。

3 个答案:

答案 0 :(得分:0)

确保要在FOR循环中运行的命令位于同一行(例如for /f ... do set path1=%%A\%%B\%%C,或者,如果有多个命令,则将它们分组在括号中,如下所示:

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

(另外,您是否设置了SETLOCAL EnableDelayedExpansion?如果是,您可能需要使用!path1!代替%path1%。)

答案 1 :(得分:0)

我相信SET不是持久的,你应该使用SETX在命令提示符下设置一个变量,让它保持在CMD会话之外, afaik,SETX在Windows 7上是原生的,但在旧版Windows版本的资源包中可用。

答案 2 :(得分:0)

您需要在选项中包含 usebackq ,如下所示:

for /f "usebackq tokens=3,4,5 delims=\" %%A in ...