2016-06-01 2 views
0

私は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 
私はそれが同じ問題であるのJavaでそれをしようとしないとき

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

、それは内のファイルを見つけることができません:これは(ディレクトリ名を指定せずに、つまり)ファイルのちょうどベース名をエコーし​​ていることを

問題があります現在のディレクトリ。 ../test data/sprint3/01.1v1.06_VK_210516.xls(バックスラッシュ()はディレクトリのパス名を区切るために使用されていますが、.batファイルは(さらに)フロントスラッシュ(/)を受け入れるようです。

ワイルドカードで完全な(相対)ディレクトリ名を取得するにはどうすればよいですか?私はCから始まる完全なパスを推測します:/も受け入れられます。それを明示的に行う方法がない場合は、それぞれのfor文で手作業でファイル名を連結することができますが、その方法はわかりません(BASHではfull = "../test data/sprint3/$ベース」(ここで、ファイルのベース名はbaseis)。

任意の考え?

答えて

0

echo %%~fiecho %%iを交換してください。

拡張子、ドライブとパス、より多くのオプション(ドライブ、パスのfor /?を参照してください。 、...)

+0

ありがとうございますが、それは私がチェックマークをクリックさせません;-) – Tony

+0

エコーは機能しますが、java -jar KDT.jar "%%〜fi"を使用するとファイルが見つかりません。引用符を使用せずに、単に%%〜fiはスペースの右側の最後の部分を見ます。引用符で正確にやっていないことがあるはずですか? – Tony

関連する問題