如何过滤确切的文件扩展名?

How to filter on exact file extension?

我在 DATA 文件夹中有 .las.lasx 文件,它们具有相同的文件名。我试图在 *.las 文件上应用进程 。但似乎通配符模式 *.las 还包括 *.lasx 文件:

for %%f in ("%DATA_PATH%\*.las") do

lasground -i "%DATA_PATH%\*.las" -merged

-merged之前的参数应该只是我的*.las文件列表,但在我的测试中它总是包含*.lasx文件。

知道如何获取我所有的 .las 文件而不获取 .lasx 文件吗?

在提供文档和您正在使用的实际程序后,我会尝试这两个示例。

用所有文件名创建一个变量。

@ECHO OFF

for %%G in ("%DATA_PATH%\*.las") do (
    IF /I "%%~xG"==".las" call set list=%%list%% "%%G"
)
lasground -i %list% -merged

制作文件列表并使用 -lof 选项。

@ECHO OFF

(for %%G in ("%DATA_PATH%\*.las") do (
    IF /I "%%~xG"==".las" echo %%G
)
)>List.txt
lasground -lof List.txt -merged

Where 命令是一种更简单的直接过滤方法,即仅输出指定的扩展名:

@Where "%DATA_PATH%":*.las 2>Nul >"LasOnly.txt"

然后您可以使用 "LasOnly.txt" 作为 lasground 的输入,使用已经建议的 -lof 选项:

@lasground -lof "LasOnly.txt" -merged