我有一个脚本,其中有3个参数,其中两个是路径。我想从.bat文件中调用它。
python myscript.py "%~dp0inputs/" "%~dp0outputs/" "foo"
如果我调用一个只使用上面的行打印argv的虚拟脚本,我会得到预期的结果,即使是包含空格的路径:
myscript.py
C:\path\containing spaces\inputs/
C:\path\containing spaces\outputs/
foo
但是,如果我使用它(即参数1的%~dp0,引号之间没有其他内容):
python myscript.py "%~dp0" "%~dp0outputs/" "foo"
然后当路径包含空格时它表现得很奇怪:
myscript.py
C:\path\containing spaces" C:\path\containing
spaces\outputs/ foo
似乎报价没有得到妥善处理 - 我做错了什么?
答案 0 :(得分:1)
这是因为引号被传递到python脚本中。 %~dp0以\ _字符结尾。
Python认为\逃脱双引号 - 很有趣。
因此,“%~dp0”作为
传递给脚本"C:\temp\containing spaces\"
Python将尾随\视为转义引号,因此它会合并参数。
它不应该这样做 - 但确实如此。
您可以删除尾随\,或添加另一个。 其中任何一个都有效:
python myscript.py "%~dp0/" "%~dp0outputs/" "foo"
python myscript.py "%~dp0\" "%~dp0outputs/" "foo"
答案 1 :(得分:0)
尝试使用设置来批量调用您的路径。 (以下示例)
{{1}}