Есть много вариантов, доступных вам, однако, поскольку я не могу использовать эти команды или видеть фактический результат, который вы получаете, вам придется использовать или адаптировать один из следующих примеров.
Если бы вы знали, что название отдела никогда не будет начинаться с символа d
, вы могли бы просто использовать:
For /F "EOL=d Delims=" %%G In ('dsquery user -samid USERNAME ^| dsget user -dept') Do Set "deptname=%%G"
Однако, если название отдела может начинаться с d
, вы можно использовать дополнительную команду find
:
For /F Delims^=^ EOL^= %%G In ('dsquery user -samid USERNAME ^| dsget user -dept ^| find /v "dept" ^| find /v "dsget"') Do Set "deptname=%%G"
Или использовать вместо нее команду findstr
:
For /F Delims^=^ EOL^= %%G In ('dsquery user -samid USERNAME ^| dsget user -dept ^| findstr /v "dept dsget"') Do Set "deptname=%%G"
В качестве альтернативы вы можете использовать идею, которую я предоставил в разделе комментариев:
Set "deptname="
For /F Delims^=^ EOL^= %%G In ('dsquery user -samid USERNAME ^| dsget user -dept ^| find /v "dept"') Do If Not Defined deptname Set "deptname=%%G"
Другие возможные альтернативы могут включать:
Если первая строка всегда является отделом:
For /F Skip^=1^ Delims^=^ EOL^= %%G In ('dsquery user -samid USERNAME ^| dsget user -dept') Do Set "deptname=%%G" & GoTo Next
:Next
Если есть пустая первая строка и вторая строка равно dept
, затем замените Skip^=1^
на Skip^=2^
Если бы вы знали все названия отделов, вы могли бы также поместить их в соответствие findstr
:
Set "depts=Design Finance IT Workshop"
For /F Delims^=^ EOL^= %%G In ('dsquery user -samid USERNAME ^| dsget user -dept ^| findstr /i "%depts%"') Do Set "deptname=%%G"