【问题标题】:change a certain string in filename (windows batch loop, wildcard)更改文件名中的某个字符串(Windows 批处理循环,通配符)
【发布时间】: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


【解决方案1】:

@Aacini

这很奇怪... 该命令在几个小时前不起作用

对于 (road_node_*.shp) 中的 %f 执行

现在...这个命令就像魔法一样工作。

虽然问题解决了,但我不知道发生了什么变化:(

【讨论】:

  • 您是否从在脚本中尝试命令到在命令行中尝试? %f 用于命令提示符,%%f 用于脚本。
猜你喜欢
  • 2011-05-15
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 2010-09-07
相关资源
最近更新 更多