蝙蝠文件中的通配符

时间:2016-06-01 12:06:48

标签: batch-file windows-7 wildcard

我从需要使用java运行的开发人员那里获得定期构建。 xls文件名每次都会更改(因此我无法对其进行硬编码)。他们最初给了我一个蝙蝠档:

pushd "%~dp0"
java -jar KDT.jar 
popd
pause

这会打开一个文件选择器,您可以在其中选择文件。出于显而易见的原因,这不会批量工作。所以我把它改成了

pushd "%~dp0"
java -jar KDT.jar "../test data/sprint3/fil1.xls"
java -jar KDT.jar "../test data/sprint3/fil2.xls"
...
java -jar KDT.jar "../test data/sprint4/fil1.xls"
java -jar KDT.jar "../test data/sprint4/fil2.xls"
popd

但正如我所说,文件名会改变(但不会改变目录)。在Linux / Unix中我会做类似

的事情
for fil in ../test*/*.xls
do
    java -jar KDT.jar $fil
done

有点复杂,因为目录名称有空格。无论如何,我试图将这个BASH转换为.bat,并且通过一些研究我写了这个(这只是做回声的测试,实际上并没有做Java,因为java花了这么长时间我只做回声):

pushd "%~dp0"

for %%i in ("../test data/sprint3/*.xls") do (
   echo %%i
)

for %%i in ("../test data/sprint3/*.xls") do (
   echo %%i
)

@echo STOP
popd

问题是这只是回显文件的基名(即没有目录名):

01.1v1.06_VK_210516.xls
01v1.03_SR_190516.xls
1.02_v0.09_SR_200516.xls
...

当我尝试使用Java时,它是同样的问题,它无法在当前目录中找到该文件。我想将通配符结果写为完整路径名,如../test data / sprint3 / 01.1v1.06_VK_210516.xls(从我看来,虽然反斜杠()用于分隔目录中的路径名,.bat文件似乎(另外)接受前斜杠(/)).

如何获取通配符中的完整(相对)目录名称?我想从C:/开始的完整路径也是可以接受的。如果没有明确的方法,那么可能在每个for语句中我可以手动连接文件名,但我不知道该怎么做(在BASH中它会像full =" ../ test data / sprint3 / $ base"(其中baseis是文件的基本名称。)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

echo %%i替换为echo %%~fi

有关更多选项(驱动器,路径,驱动器和路径,扩展程序......),请参阅for /?