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

它将尽最大努力达到设置的区域。我想取出共享的物理路径并将其变成稍后使用的变量。我的方法不起作用,我不知道我错过了什么。“for/f”不使用cmd.exe批处理文件设置变量

+0

它是如何不工作?什么是错误或结果? – ewall 2011-10-17 13:31:42

+0

当我做echo%path1%什么都没有。它通过第一部分,然后它会显示设置路径1 = path.first.last然后我回声,什么都没有显示 – TLDAN 2011-10-17 14:13:02

回答

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%

0

我相信SET不具有持续性,你应该使用SETX设置在命令提示符下一个变量,并将它留在外面CMD会话,afaik,SETX在Windows 7上是本地的,但是是av可用于旧版Windows资源工具包。

0

你需要在你的选择有usebackq像这样:

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