私は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)。
任意の考え?
ありがとうございますが、それは私がチェックマークをクリックさせません;-) – Tony
エコーは機能しますが、java -jar KDT.jar "%%〜fi"を使用するとファイルが見つかりません。引用符を使用せずに、単に%%〜fiはスペースの右側の最後の部分を見ます。引用符で正確にやっていないことがあるはずですか? – Tony