从批处理

时间:2016-02-19 19:46:16

标签: windows batch-file

我正在编写一个查询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,我将得到以下结果

enter image description here

我包含了find命令,只保留中间行。然后我想将中间行输出到稍后可以引用的变量。问题是代码现在的方式,它不输出一个只是空白的变量。

0 个答案:

没有答案