获取批处理变量中的 profilepath 值

获取批处理变量中的 profilepath 值

我需要编写一个批处理文件来移动一些目录内容。

如何将命令 net user xxx /domain 返回的 profilepath 值放入批处理变量中?

答案1

您可以使用对于/f循环并将net user命令传送到查找字符串命令使用tokensdelims相应地在批处理脚本中解析输出并从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 pathnet use xxx /domain

  • ^|循环括号内管道符号 ( ie ) 前面的插入符号将命令for /f的输出通过管道传输net userfindstr命令中,因此它可以转义管道符号,以便在循环内执行命令时知道将一个命令的输出重定向为另一个命令的输入,否则它会感到困惑,所以只需将其转义即可。

  • 百分号在批处理脚本中具有特殊含义,因此在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
    
  • 转义符、分隔符和引号

相关内容