批量扩展通配符

时间:2017-06-26 10:32:46

标签: java windows batch-file

我为linux和windows编写了一个Java程序。 要启动程序,我在linux中使用以下代码:

abc.sh:

java -jar C:\AudiobookConverter\AudiobookConverter.jar "%*"

“$ @”会扩展我可能会抛出的任何通配符。 所以,如果我希望我的程序处理某个目录中的所有.mp3文件,我只需调用abc.sh * .mp3就可以实现它的魔力。

在Windows下,我有以下代码,它应该做同样的事情: abc.bat:

NR===FNR

但是当我调用abc.bat * .mp3时,它会将* .mp3传递给java程序,而不是以.mp3结尾的文件列表。

我做错了什么,以及如何解决这个问题?

问候, AHahn94

1 个答案:

答案 0 :(得分:2)

@echo off
setlocal enabledelayedexpansion
set "files="
for /f "delims=" %%a in ('dir /b /a-d "%*" ') do set "files=!files! %%a"
java -jar C:\AudiobookConverter\AudiobookConverter.jar "%files%"

setlocal命令打开调用delayed expansion的本地环境。 dir命令列出文件(仅限名称 - 无目录名),for将整个列表行分配给%%a,每个名称都附加到环境变量files使用delayed expansion语法访问运行时值。

建立files变量后,可以使用常规语法将其传递给java命令。