我正在运行像
这样的命令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}来保存命令返回的输出值,然后使用该输出。但事情并没有像附图中所描述的那样预期
我已经使用过这种方法(从文件中读取文本)几次并且似乎工作正常但有时我试图从正在输出的文件中读取文本(ted)& #34;通过命令行,它不会工作。请指导我如何处理这种情况以及导致这种情况的原因
您可以在此处找到输出文件 https://www.dropbox.com/s/yr6s7eo8d8uwhey/output.txt?dl=0
答案 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}}