Bat:如何提取命令的文件名

时间:2010-07-30 13:36:39

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

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

该程序名为ShowFiles.exe,它采用如下参数:

"ShowFiles opened ..." 

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

结果如下:

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

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

像这样:

test1.txt 

test2.txt 

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用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