【问题标题】:How to filter on exact file extension?如何过滤确切的文件扩展名?
【发布时间】:2019-05-22 20:47:50
【问题描述】:

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

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

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

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

知道如何在不获取 .lasx 文件的情况下获取我的所有 .las 文件吗?

【问题讨论】:

    标签: batch-file wildcard filenames file-extension


    【解决方案1】:

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

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

    @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
    

    【讨论】:

    • 好吧,我在做类似的事情,但是我需要将 .las 结果存储在一个列表中(因为我需要将该列表作为 mycommand 的参数,它将处理这一切),我不知道该怎么做......我认为找到一种直接过滤它的方法会更简单。有什么想法吗?
    • @Arkeen 不知道您要合并多少个文件以及您使用什么程序来合并这些文件,因此很难给您任何更具建设性的反馈。
    • 好吧,mycommand 实际上是 lasground(来自 LASTolls),这里的文档:cs.unc.edu/~isenburg/lastools/download/lasground_README.txt)。到目前为止,我只想合并 5 个文件,但将来可能会更多。
    • 如果该命令还可以使用通配符,我会假设该命令可以采用多个文件名。因此,只需使用 for 命令构建文件列表。然后使用文件列表变量执行您的命令。
    • @Arkeen 好像错过了这个选项:-lof file_list.txt
    【解决方案2】:

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

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

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

    @lasground -lof "LasOnly.txt" -merged
    

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 2010-12-31
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多