我需要编写一个批处理文件来移动一些目录内容。
如何将命令 net user xxx /domain 返回的 profilepath 值放入批处理变量中?
答案1
您可以使用对于/f循环并将net user
命令传送到查找字符串命令使用tokens
并delims
相应地在批处理脚本中解析输出并从User profile
针对该命令运行的 AD 中的帐户设置的字段中获取值。
脚本
@ECHO ON
for /f "tokens=3 delims= " %%a in ('net user <username> /domain ^| findstr /i "profile"') do set profilepath=%%a
echo %profilepath%
脚本说明
此脚本假定您在运行时将以下内容替换为从命令
<username>
中获取所需用户名的明确值。Profile path
net use xxx /domain
^|
循环括号内管道符号 ( ie ) 前面的插入符号将命令for /f
的输出通过管道传输net user
到findstr
命令中,因此它可以转义管道符号,以便在循环内执行命令时知道将一个命令的输出重定向为另一个命令的输入,否则它会感到困惑,所以只需将其转义即可。百分号在批处理脚本中具有特殊含义,因此在
for
批处理脚本中使用循环时,需要将此占位符的百分号(即)加倍%%a
以进行转义,以确保将其解释为单个%
,并可以在循环内相应地传递变量。
更多资源
- 为/F
For /?
delims=xxx - specifies a delimiter set. This replaces the default delimiter set of space and tab. tokens=x,y,m-n - specifies which tokens from each line are to be passed to the for body for each iteration. This will cause additional variable names to be allocated. The m-n form is a range, specifying the mth through the nth tokens. If the last character in the tokens= string is an asterisk, then an additional variable is allocated and receives the remaining text on