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批处理文件设置变量
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批处理文件设置变量
确保要在FOR循环运行的命令是在同一行(如for /f ... do set path1=%%A\%%B\%%C
或者,如果你有多个命令,它们在括号分组,像这样:
for /f ... do (
echo "Setting path1"
set path1=%%A\%%B\%%C
)
...
(另外,你有SETLOCAL EnableDelayedExpansion
一套?如果是这样,您可能需要使用!path1!
而不是%path1%
)
我相信SET不具有持续性,你应该使用SETX设置在命令提示符下一个变量,并将它留在外面CMD会话,afaik,SETX在Windows 7上是本地的,但是是av可用于旧版Windows资源工具包。
你需要在你的选择有usebackq像这样:
for /f "usebackq tokens=3,4,5 delims=\" %%A in ...
它是如何不工作?什么是错误或结果? – ewall 2011-10-17 13:31:42
当我做echo%path1%什么都没有。它通过第一部分,然后它会显示设置路径1 = path.first.last然后我回声,什么都没有显示 – TLDAN 2011-10-17 14:13:02