【问题标题】:Windows Batch File Quote ProblemsWindows 批处理文件引用问题
【发布时间】:2012-07-30 09:22:25
【问题描述】:

我有下面的代码,但是执行的时候引号有问题:子字符串方法需要使用:=,但是我不知道怎么结合例如:~0, 9.

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】:

    您的代码中有一些语法错误。

    不要在SET 语句中添加空格,否则你会得到带有空格的变量名url<space> 而不是url

    if %var:~0,9%=="phpfile:/" ( 必须被引用,否则解析器将无法按预期工作。

    set url = %url:~0,-1%" 的尾随引号将在末尾添加一个引号,我想你需要类似 set "url=%url:~0,-1%" 的东西

    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%"
    )
    

    【讨论】:

    • 谢谢,但是还有一个问题:第一条规则给出了 if ""phpfile:/"=="phpfile:/" (
    • 不,仅当您调用批处理文件myParser.bat "phpfile:/xyz/"。那你应该把set var=%1改成set "var=%~1"
    猜你喜欢
    • 2010-10-03
    • 2011-07-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多