我正在编写一个查询AD的脚本,以便为分离终止提取必要的信息。我的批处理脚本如下
echo Please enter the employee's name below...
echo.
echo.
set /p first="First Name: "
set /p last="Last Name: "
echo.
Title %first% %last%'s information...
echo Please wait while information is loaded...
echo.
echo.
echo.
echo Username:
@echo off
for /f "delims=" %%i in ('dsquery user -name "*%last%* *%first%*"') do set UserID=%%i
echo %UserID%
echo Username: %UserID% >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
echo Office
FOR /F "usebackq tokens=1 skip=1 delims=" %%A in (`"echo %UserID% | dsget user -office"`) do (set "Office=%%A")
echo %Office%
pause
第一部分正确完成但是当它试图提取办公室信息时,脚本就崩溃了。我这样做的原因是因为我只是执行echo%UserID%| dsget user -office它将输出
office
XX-XX-XX
dsget suceeded
我只想将实际办公地点的中间行设置为变量Office。
我已经在这里查看了许多解决方案,但我似乎无法让它正常工作。我想知道是否是因为我回声然后管道的方式。
echo%UserID%|的原因dsget user -office使用该变量是因为它比必须重做dsquery更快地执行搜索。
任何帮助你们都可以给我一个太棒了!
谢谢
编辑:
好的,所以我错过了^(无论如何这样做) 我的代码现在是
echo Office
echo ------------------------------------------------------------------------------
@rem echo %UserID% | dsget user -office
echo Before >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
FOR /F "tokens=1 skip=1 delims=" %%A in (`echo %UserID%^| dsget user -office`) do (set "Office=%%A")
echo After >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
echo %Office%
echo %Office% >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
echo After echoing variable >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
它不再崩溃但是告诉我
The system cannot find the file 'echo
ECHO is off.
以及输出所有三个echo语句
希望上次编辑:
我的代码目前正在
echo Office
echo ------------------------------------------------------------------------------
echo Before >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
FOR /F "tokens=1 skip=1 delims=" %%A in ('echo %UserID%^|dsget user -office^|Find /V "office"^|Find /V "dsget"') do (set "office=%%A")
echo After >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
echo Office: %office% >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
echo After echoing variable >> C:\Users\%username%\Desktop\Termination\%first%%last%.txt
除了“Office:”之外,它不会输出任何内容。我认为在变量办公室中没有保存任何内容,因此它不会输出任何内容。
再次编辑:
因此,如果我echo %UserID%^|dsget user -office
,我将得到以下结果
我包含了find命令,只保留中间行。然后我想将中间行输出到稍后可以引用的变量。问题是代码现在的方式,它不输出一个只是空白的变量。