批处理比较路径名称%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%的称为解析:部分
尝试
CALL :part "%~1"
%~1
扩展的第一个参数不包围引号。并且添加的周围引号可确保被叫标签只接收一个参数。
+0
Jepp,修复它。我尝试使用“%1”,但我不知何故错过了“〜”>。> 非常感谢=) – QAT 2013-04-04 16:03:06
我相信你在代码片段中显得过于经济。 'PA'毫无疑问是正确的,但如果你使用你声明的参数执行批处理,你必须处理%2的字符串 - 但这不是你所显示的。该字符串必须在您的代码中更早被扣除。 – Magoo 2013-04-04 15:51:20
是的,你是对的,但是错误实际上和这里显示的完全一样。有一条IF线与其中一条有相同的问题。 – QAT 2013-04-04 16:05:45