Apache 在安装路径中创建带有空格的服务

Apache 在安装路径中创建带有空格的服务,apache,batch-file,windows-services,procrun,Apache,Batch File,Windows Services,Procrun,我正在使用Apache的ProCurn创建一个Windows服务,但很难正确设置它。我正在使用批处理文件来执行procrun安装。我的问题有两个方面 我无法创建名称中带有空格的服务。此示例取自Apache,正在设置prunsrv服务安装: prunsrv //IS//TestService --DisplayName="Test Service" \ --Install=prunsrv.exe --Jvm=auto --StartMode=jvm --StopMode=jvm \

我正在使用Apache的ProCurn创建一个Windows服务,但很难正确设置它。我正在使用批处理文件来执行procrun安装。我的问题有两个方面

  • 我无法创建名称中带有空格的服务。此示例取自Apache,正在设置prunsrv服务安装:

    prunsrv //IS//TestService --DisplayName="Test Service" \
        --Install=prunsrv.exe --Jvm=auto --StartMode=jvm --StopMode=jvm \
        --StartClass=org.apache.SomeStartClass --StartParams=arg1;arg2;arg3 \
        --StopClass=org.apache.SomeStopClass --StopParams=arg1#arg2
    
    我在C:\Program Files\中的某个位置安装了一个服务,其中有一个空格。我需要--Install路径为“C:\Program Files\prunsrv.exe”,以正确指向正确的路径。如果我没有用引号括起路径:

    --Install=C:\Program Files\prunsrv.exe
    
    Windows服务认为安装路径为:

    C:\Program
    
    "C:\Program Files\prunsrv.exe"
    
    这是一个无效的位置。当我使用:

    --Install="C:\Program Files\prunsrv.exe"  (or) 
    "--Install=C:\Program Files\prunsrv.exe"
    
    Windows服务认为安装路径为:

    C:\Program
    
    "C:\Program Files\prunsrv.exe"
    
    …这也是一个无效位置(它会尝试使用引号执行该路径。)

    有人知道如何正确安装路径中带有空格的Windows服务吗

  • 如果出现进一步的复杂情况,最好有更详细的文档。是否有人有任何关于procrun的附加文档或正在使用的示例?到目前为止,我找到的资源列表如下:

    在其他问题中使用的好资源似乎不再可用:

  • 对于问题1,您可以尝试使用仅由短名称组成的等效路径。借助
    FOR
    循环,可以转换长名称路径:

    FOR %%F IN ("C:\Program Files\prunsrv.exe") DO SET prunsrv=%%~sF
    prunsrv … --Install=%prunsrv% …
    

    我知道这很古老,但有点不太聪明的解决方案是:

    设置JVM\u DLL=“c:\Program Files\Java\jre6\bin\server\JVM.DLL”


    prunsrv//是//%SERVICE\u NAME%--Jvm=%Jvm\u DLL%

    Wow,它将空格转换为FODLERNAME~1/2/etc,更重要的是,它可以工作。非常感谢你。那叫短名字?短名字,是的。转换路径中的每个特定名称的长度不超过8个字符,扩展名最多可为3个字符。请查阅,再次感谢。我从来都不知道寡妇们能做些什么。如果能知道魔法
    prunsrv=%%~sF
    能做些什么就好了。如果存在任何风险或案例,
    %%~sF
    失败