【问题标题】:Batch error 'C: \ Program' is not recognized批处理错误“C:\Program”无法识别
【发布时间】:2017-06-21 15:11:13
【问题描述】:

我试试这批

start cmd.exe /k "C:\Program Files (x86)\QGIS 2.18\OSGeo4W.bat" ogr2ogr.exe  -f "PostgreSQL" PG:"host=10.210.1.32 user=eric_plassot dbname=activite schemas=activite password=mdp" -t_srs EPSG:2154 -append -nlt PROMOTE_TO_MULTI "C:\Users\eplassot\toto.kml"

并得到这个错误

C: \ Program' is not recognized...

我能做什么?

【问题讨论】:

标签: batch-file


【解决方案1】:

因为您使用了多个引号,所以在语法上不清楚嵌套引号从哪里开始。试试这个:

start cmd.exe /k ""C:\Program Files (x86)\QGIS 2.18\OSGeo4W.bat" ogr2ogr.exe  -f "PostgreSQL" PG:"host=10.210.1.32 user=eric_plassot dbname=activite schemas=activite password=mdp" -t_srs EPSG:2154 -append -nlt PROMOTE_TO_MULTI "C:\Users\eplassot\toto.kml""

【讨论】:

  • hello这会导致cmd.exe被循环
  • 这样如果我粘贴命令“C:\Program Files (x86)\QGIS 2.18\OSGeo4W.bat” ogr2ogr.exe -f "PostgreSQL" PG: "host = 10.210.1.32 user = eric_plassot dbname = activity schemas = = Mdp "-t_srs EPSG: 2154 -append -nlt PROMOTE_TO_MULTI" C:\Users\eplassot\toto.kml"在命令窗口中有效
  • 您的代码是否在每个反斜杠前后都包含这些空格?基本上,您需要用空格、可执行文件的路径以及最后cmd /k 之后的整个内容引用每个参数。
  • 好的,我更改了 bat 的名称(之前是 cmd.bat),现在它可以工作了,非常感谢
  • 忠告:不要将脚本命名为与任何命令相同。
【解决方案2】:
  1. start 可能会将第一个引用的参数解释为窗口标题,因此请明确提供一个(甚至可能是一个空的,例如 "")以避免麻烦。
  2. cmd /K 消耗前导和尾随引号,因此剩余的命令行显得无效。为避免这种情况,请附上整个命令行以调用""。为避免转义命令行,请转义最外层的引号:

    start "" cmd.exe /K ^""C:\Program Files (x86)\QGIS 2.18\OSGeo4W.bat" ogr2ogr.exe  -f "PostgreSQL" PG:"host=10.210.1.32 user=eric_plassot dbname=activite schemas=activite password=mdp" -t_srs EPSG:2154 -append -nlt PROMOTE_TO_MULTI "C:\Users\eplassot\toto.kml"^"
    

【讨论】:

  • hello 与双引号相同的结果:命令重复到无穷大。如果我执行 cd C:\Users\eplassot 然后粘贴此代码 "C:\Program Files (x86)\QGIS 2.18\OSGeo4W.bat" ogr2ogr.exe -f "PostgreSQL" PG:"host=10.210.1.32 user=eric_plassot dbname=activite schemas=activite password=mdp" -t_srs EPSG:2154 -append -nlt PROMOTE_TO_MULTI "C:\Users\eplassot\toto.kml" 它可以工作而且我无法批量复制它
  • 对不起,我跟不上;没有循环,我看不到批处理文件 OSGeo4W.bat 里面的内容,所以无法告诉我......
【解决方案3】:

调用的第一批是

@echo off

rem Root OSGEO4W 主目录与此脚本所在的目录相同 设置 OSGEO4W_ROOT=%~dp0 rem 将双反斜杠转换为单反斜杠 设置 OSGEO4W_ROOT=%OSGEO4W_ROOT:\=\% 回声。 & echo OSGEO4W 主页是 %OSGEO4W_ROOT% & echo。

设置 PATH=%OSGEO4W_ROOT%\bin;%PATH%

rem 添加特定于应用程序的环境设置 对于 ("%OSGEO4W_ROOT%\etc\ini*.bat") 中的 %%f,请调用 "%%f"

rem 列出可用的 o4w 程序 rem 但仅当 osgeo4w 不带参数调用时 @echo on @if [%1]==[] (echo run o-help 获取可用命令列表 & cmd.exe /k) else (cmd /c "%*")

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2018-11-10
    • 2012-12-08
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多