java - 批量扩容通配符

标签 java windows batch-file

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

abc.sh:

#!/bin/bash
java -jar /opt/AudiobookConverter/AudiobookConverter.jar "$@"

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

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

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

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

我做错了什么,如何解决?

您好, AHahn94

最佳答案

@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 expansiondir 命令列出文件(仅名称 - 没有目录名称),for 将整个列表行分配给 %%a,并且每个名称使用 delayed expansion 语法附加到环境变量 files 以访问运行时值。

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

关于java - 批量扩容通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44757766/

相关文章:

java - 如何在具有自定义标签的 xml 中添加新行?

java - Spring-boot应用测试-内存问题

windows - 为什么回显到 Windows PowerShell 中的主机文件会在字符之间创建空格?

python - 为 Windows 7 编译 IP2Location Python 扩展

windows - 什么是 Windows 句柄?

batch-file - 理解批处理文件中的start、2>nul、cmd等符号

java - Spring @Retryable 不工作

java - 如何从 List<> 中删除项目?

windows - FOR 循环中带有变量的奇怪输出

batch-file - 如何压缩包含N个文本文件的N个子文件夹中的文本文件?