【发布时间】:2018-05-29 01:33:51
【问题描述】:
我有一个ogr2ogr 命令,我正在将该命令与 Windows shell 命令混合使用
我只需要遍历某些扩展名,即*.shp。而且,下面的命令是我开始的地方
for %f in (*.shp) do (ogr2ogr .....
但现在我必须遍历具有这种名称的文件。
road_node_1.shp
road_node_2.shp
...
road_node_9.shp
我玩过很多类型的通配符,比如
for %f in (road_node_*) do (ogr2ogr .....
然后它会遍历所有与*.shp 相关的文件,并且文件名(不带扩展名)相同
road_node_1.shx
road_node_1.dbf
road_node_1.cpg
road_node_1.prj..
所以它确实会检查不必要的文件,这需要更多时间来处理
我尝试了下面的命令,也不起作用
for %f in (road_node_*.shp) do (ogr2ogr .....
我想知道有没有办法像这样循环遍历文件名。
【问题讨论】:
-
当然,这个命令应该可以工作:
for %f in (road_node_*.shp) do (ogr2ogr .....。我建议您使用简单的 ECHO 命令进行测试:for %f in (road_node_*.shp) do @echo %f。 PS - 您是否知道 FOR 参数的单个百分号版本仅在命令行中有效?如果你想在批处理文件中使用它,那么你应该使用双百分号... -
处理批处理脚本是一种Low Life,如果你理解我的话......除了一个cmd粉丝,不知道你的问题的答案,但在这里也向你学习,遥远,像信天翁一样。
-
Doesn't Work表示Doesn't do as I expected.在不知道您预期会发生什么以及实际发生什么的情况下,我们只能猜测。请edit您的问题包含额外信息。话虽如此,ogr2ogr是批处理文件还是其他类型的可执行文件? -
我删除了
shell标签,因为它与Unix/Linux无关 -
要么是
for %f in (road_node_*.shp) do要么是for %f in (road_node_?.shp) do;?匹配一个字符,*匹配更多;请注意,这两个变体也都匹配road_node_.shp...
标签: windows loops batch-file cmd