【问题标题】:Bat: how to extract filenames of a commandBat:如何提取命令的文件名
【发布时间】:2011-03-23 06:23:54
【问题描述】:

我正在尝试创建一个脚本,列出程序返回的文件的名称。

该程序名为 ShowFiles.exe,它接受如下参数:

"ShowFiles opened ..." 

所以参数 1 是“打开的”,参数 2 是“...”

结果如下所示:

c:\tmp\test1.txt#0 - add default 
c:\tmp\test2.TXT#1 - edit default 

我想要的是只获取文件的名称。

像这样:

test1.txt 

test2.txt 

非常感谢您的帮助。

【问题讨论】:

  • 向我们提供您需要使用的数据怎么样?这里的每个解决方案都将始终使用dir 输出并为其量身定制。由于您无法自己找到解决方案,我保证您也无法适应解决方案。
  • @bow:阅读他们写的内容。有问题的命令不是dir,而是别的东西。
  • 更新了问题,因为这里的 cmets 不显示换行符。 ;)

标签: batch-file extract filenames command-line-arguments


【解决方案1】:

您可以使用for /f 来遍历命令输出:

for /f %%F in ('ShowFiles ...') do ...

这可以采用一些选项来控制如何进行标记化。在您的情况下,文件名显然停在#,因此以下内容应在# 处拆分,并且只取第一个令牌:

for /f "tokens=1 delims=#" %%F in ('ShowFiles ...') do (
    echo File name: %%F
    echo File name without path: %%~nxF
)

然后,您可以根据需要使用如上所示的文件名。如果您只需要输出它们,那么一个简单的echo %%Fecho %%~nxF 就足够了。有关这些内容的更多详细信息,请访问help for

【讨论】:

    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2017-04-23
    • 2014-06-07
    • 1970-01-01
    相关资源
    最近更新 更多