我的自定义协议(phpfile)让我通过浏览器在编辑器中打开php文件。唯一的问题是,它提供了完整的网址,每个浏览器都有所不同,我见过:
所有这些都需要转换为[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
===编辑=== 我现在有以下内容,但它在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:"=%
答案 0 :(得分: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!"
延迟扩展主要用于更好地处理导致批处理文件出现问题的某些字符。但一般来说,我想知道你希望你的代码如何工作。
答案 1 :(得分: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语句不使用花括号,或者需要在条件语句周围使用圆括号。