在命令行

时间:2017-03-11 19:05:08

标签: windows batch-file cmd nssm

我正在运行像

这样的命令
nssm.exe get MyWindowsService AppParameters

,其输出为

--client-version 6.1.0

现在我想在此输出中添加一些文本,如下所示

--client-version 6.1.0 --baseUrl helloworld.txt

然后使用此新输出

运行新命令
nssm.exe set MyWindowsService AppParameters = --client-version 6.1.0 --baseUrl helloworld.txt

我想在批处理文件中完成所有这些操作,所以我只需要添加" - baseUrl helloworld.txt"并且应该使用第二个命令处理与第一个命令的输出和执行的连接。

我一直在使用{for / f}来保存命令返回的输出值,然后使用该输出。但事情并没有像附图中所描述的那样预期 enter image description here

我已经使用过这种方法(从文件中读取文本)几次并且似乎工作正常但有时我试图从正在输出的文件中读取文本(ted)& #34;通过命令行,它不会工作。请指导我如何处理这种情况以及导致这种情况的原因

您可以在此处找到输出文件 https://www.dropbox.com/s/yr6s7eo8d8uwhey/output.txt?dl=0

1 个答案:

答案 0 :(得分:2)

检索 AppParameters 时,问题是unicode输出。您可以将其作为

来处理
nssm get MyWindowsService AppParameters > tempFile
for /f "delims=" %%a in ('
    more tempFile
') do (
    nssm.exe set MyWindowsService AppParameters "%%a --baseUrl helloworld.txt"
)

for /f "delims=" %%a in ('
    nssm get MyWindowsService AppParameters ^| sort
') do (
    nssm.exe set MyWindowsService AppParameters "%%a --baseUrl helloworld.txt"
)

或者,没有临时文件

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "svc=MyWindowsService"

    nssm install "%svc%" "c:\windows\system32\cmd.exe"
    nssm set     "%svc%" Start SERVICE_DEMAND_START
    nssm set     "%svc%" AppParameters "--client-version ""6.1.0"""

    echo ---------------------------------------------------------------
    nssm get     "%svc%" AppParameters
    echo ---------------------------------------------------------------

    for /f "delims=" %%a in ('
        nssm get "%svc%" AppParameters ^| sort
    ') do (
        set "appParams=%%a"
        setlocal enabledelayedexpansion
        nssm.exe set "%svc%" AppParameters "!appParams:"=""!" "--baseUrl=""C:\ProgramData\\"""
        endlocal
    )

    echo ---------------------------------------------------------------
    nssm get     "%svc%" AppParameters
    echo ---------------------------------------------------------------

    nssm remove  "%svc%" confirm

已修改包含了如何处理报价的示例代码。

{{1}}