2013-04-04 163 views
1

这里是我的批处理脚本的一小部分,尽管我在其中使用“”,但只要路径中存在空格,就不会工作。批处理比较路径名称%1

call :part %1 

    :part 
    set _fname=%~nx1 
    if "%_fname:~0,7%"=="CREATE_" (
     copy "%~1" "%appdata%\somefolder" 
     goto :eof 
    ) 

如果我从类似的东西开始,一切工作正常。

mybatch.bat "Z:\hello_world\CREATE_abc.def" 

当开始这样的:

mybatch.bat "Z:\hello world\CREATE_abc.def" 

我得到一个错误这样的: “世界\ CREATE_abc.def” “==” “” 无法处理。

任何想法?

+1

我相信你在代码片段中显得过于经济。 'PA'毫无疑问是正确的,但如果你使用你声明的参数执行批处理,你必须处理%2的字符串 - 但这不是你所显示的。该字符串必须在您的代码中更早被扣除。 – Magoo 2013-04-04 15:51:20

+0

是的,你是对的,但是错误实际上和这里显示的完全一样。有一条IF线与其中一条有相同的问题。 – QAT 2013-04-04 16:05:45

回答

1

的问题是1%的称为解析:部分

尝试

CALL :part "%~1" 

%~1扩展的第一个参数不包围引号。并且添加的周围引号可确保被叫标签只接收一个参数。

+0

Jepp,修复它。我尝试使用“%1”,但我不知何故错过了“〜”>。> 非常感谢=) – QAT 2013-04-04 16:03:06