将全名从批处理文件传递到vbs文件,然后使用它运行word宏

时间:2018-07-03 16:09:51

标签: vba batch-file vbscript

我有一个批处理文件,可提取广告用户的全名特征并将其设置为变量n。我需要获取该变量并将其传递到vbs文件,然后从该vbscript运行word宏。这是我所拥有的:

批次:

divdir = conn.extend.standard.paged_search('cn = All.DL Div DSS Directors, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'])
for b in divdir:
    with open ('test2.txt', 'w') as file:
        file.write (b)

vbs:

divdir = conn.extend.standard.paged_search('cn = All.DL Div DSS Directors, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'])
my_file=open("test2.txt","w")
for b in divdir:
    my_file.write(b.get('divdir')+'\n')
my_file.close()

vba:

TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

截至目前,我一直收到VBScript“下标超出范围错误”,所以我的问题与将变量从批处理传递到vbs有关。

1 个答案:

答案 0 :(得分:1)

变量n将包含Full Name _spaces_ User Name,但您不会使用它将其传递给vb。

该批处理忽略Full Name,并将结果在%%B中直接传递到vbscript。

@echo off
for /f "tokens=2*" %%A in (
    'NET USER "username" /DOMAIN ^| FIND /I "Full name"'
) do cscript //NoLogo H:\firstRotation\mgmtSSnD\CMMR\fullName.vbs "%%B"

批处理中传递的报价已在vb中剥离,您必须重新报价。
我认为错误消息来自vba。

fullName = WScript.Arguments(0)
Set objWord = GetObject(,"Word.Application")
Set x = objWord.Documents.Open("mypath\my.docm")
objWord.Run "test", """fullName"""

使用默认定界符空间(连续计数为1)解析net user输出:

        "Full Name                    Anthoni B. Caesar"
Tokens     1   2                        3     4    5
Delims       _    ____________________       _  _
For-Var  %%A  %%B                      %%C    %%D %%E