0

我的自定义协议(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:"=%
4

2 回答 2

2

那是因为您在批处理文件和 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!"

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

于 2012-07-30T08:37:19.673 回答
1

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

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 语句不使用花括号,或者在条件语句周围需要圆括号。

于 2012-07-30T08:37:53.940 回答