更改文件名中的特定字符串(windows批处理循环、通配符)

更改文件名中的特定字符串(windows批处理循环、通配符),windows,loops,batch-file,cmd,Windows,Loops,Batch File,Cmd,我有一个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 ..... 然后它循环遍历与*

我有一个
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
相关的所有文件,文件名(不带扩展名)相同

所以它会处理不必要的文件,这需要更多的时间来处理

我尝试了下面的命令,但也不起作用

for %f in (road_node_*.shp) do (ogr2ogr .....
我想知道是否有一种方法可以循环使用这样的文件名。

@Aacini

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

对于%f in(道路节点)do

现在。。。这个命令就像一个魔术


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

当然,此命令应该有效:
用于(road_node.*.shp)中的%f,do(ogr2ogr…。
。我建议您使用一个简单的ECHO命令进行测试:
用于(road_node.*.shp)中的%fdo@echo%f
.PS-你知道FOR参数的单百分号版本只在命令行中工作吗?如果你想在批处理文件中使用它,那么你应该使用双百分号…处理批处理脚本是一种低效的,如果你理解我的话…除了cmd风扇,你不知道你的问题的答案,bu在这里,我也不会像信天翁一样从你那里学习。
不起作用
意味着
没有按照我的预期做。
在不知道你预期会发生什么和实际发生什么的情况下,我们只能猜测。请
编辑
你的问题以包含额外的信息。这么说来,
ogr2ogr
是一批吗文件或其他类型的可执行文件?我已删除了
shell
标记,因为它与Unix/LinuxIt无关(road\u node\u*.shp)中的%f是
,或(road\u node\uxp)中的%f是
do
匹配一个字符,
*
也匹配更多字符;请注意,这两个变体也匹配
road\u node.shp
…您是否从在脚本中尝试命令改为在命令行中尝试命令?
%f
用于命令提示,
%f
用于脚本。
for %f in (road_node_*.shp) do (ogr2ogr .....