【问题标题】:Batch File Protocol Parser批处理文件协议解析器
【发布时间】:2012-07-30 08:31:41
【问题描述】:

我的自定义协议 (phpfile) 允许我通过浏览器在编辑器中打开 php 文件。唯一的问题是,它提供了完整的 url,在每个浏览器中都不同,我见过:

  • phpfile:/[文件]
  • phpfile:/[文件]/
  • phpfile://[文件]/
  • phpfile://[文件]

所有这些都需要转换为 [file]。问题是我收到语法错误。正确的语法是什么?

set var=%1
if("%var:~0,9%"=="phpfile:/")
{
    set url = %var:~9% 
}
else
{
    set url = %var:~10%
}

if(%var:-1,1% == "/")
{
    url = %url:~0,-1%   
}
START "" "C:\Program Files (x86)\NuSphere\PhpED\7.0\phped.exe" url

=== 编辑 === 我现在有以下内容,但它在网址末尾添加了“”

SETLOCAL enabledelayedexpansion

set var=%1

if %var:~0,9%=="phpfile:/" (
    set url = %var:~9% 
) else (
    set url = %var:~10%
)

if "%var:~-1%"=="\" (
    set url = %url:~0,-1%"
)
if "%var:~-1%"=="/" (
    set url = %url:~0,-1%"
)

START "" "C:\Program Files (x86)\NuSphere\PhpED\7.0\phped.exe" %url:"=%

【问题讨论】:

    标签: windows windows-7 batch-file


    【解决方案1】:

    那是因为你在批处理文件和 C 之间写了一些可怕的混蛋,但肯定没有任何语言在任何地方使用。

    尝试以下方法:

    setlocal enabledelayedexpansion
    set "var=%~1"
    if "!var:~0,9!=="phpfile:/" (
        set "url=!var:~9!"
    ) else (
        set "url=!var:~10!"
    )
    
    if "!var:-1,1!"=="/" (
        set "url=!url:~0,-1!"
    )
    
    START "" "C:\Program Files (x86)\NuSphere\PhpED\7.0\phped.exe" "!url!"
    

    延迟扩展主要用于更好地处理一些在批处理文件中引起问题的字符。不过总的来说,我想知道您会如何期望您的代码能够正常工作。

    【讨论】:

      【解决方案2】:

      您的代码中有很多问题,这应该可以解决问题:

      set var="%1"
      if %var:~0,9%=="phpfile:/" (
          set url="%var:~9%"
      ) else (
         set url="%var:~10%"
      )
      
      if "%var:-1,1%"=="/" (
          set url="%url:~0,-1%"
      )
      START "" "C:\Program Files (x86)\NuSphere\PhpED\7.0\phped.exe" url
      

      您可以使用help <command> 检查批处理文件命令的语法。 IF 语句不使用花括号,或者在条件语句周围需要圆括号。

      【讨论】:

      • 谢谢,现在唯一的问题是脚本在url末尾添加了“”。
      猜你喜欢
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 2021-10-05
      • 2012-09-01
      相关资源
      最近更新 更多