2016-06-01 1 views
0

Я получаю периодические сборки от разработчика, которым нужно запускать Java. Имена файлов xls меняются каждый раз (поэтому я не могу их жестко кодировать). Первоначально они только что дали мне bat-файл:Wild cards in bat files

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 занимает так много времени, что я просто делаю эхо):

проблема заключается в том, что это вторя только базовое имя файла (т.е. без имени каталога):

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 файлы кажутся (дополнительно) принимают переднюю косую черту (/)).

Как я могу получить полное (относительное) имя каталога в wild card? Я думаю, что и полный путь, начинающийся с C: /, также будет приемлемым. Если нет явного способа сделать это, то, возможно, в каждом для оператора я могу вручную связать имя файла, но я не уверен, как это сделать (в BASH это будет что-то вроде full = "../test data/sprint3/$ база»(где baseis базовое имя файла).

Любые мысли?

ответ

0

Заменить echo %%i с echo %%~fi.

См for /? больше вариантов (привода, путь, диск и путь, расширение , ...)

+0

Спасибо. Это работает, но он не позволит мне нажать галочку ;-) – Tony

+0

Эхо работает, но когда я использую java -jar KDT.jar "%% ~ fi", он говорит, что файл не найден. Используя без кавычек, просто %% ~ fi просматривает только последнюю часть справа от пространства. Должно быть, что-то я не делаю правильно с цитатами? – Tony