以下は正常に動作します:
"path_to_libreoffice\soffice.exe" --convert-to csv test.xls
ただし、フォルダー内のすべての xls ファイルを変換しようとすると何も起こりません。
"path_to_libreoffice\soffice.exe" --convert-to csv *.xls
すべての xls ファイル名をコピーしてそのように実行できますが、なぜ機能しないのでしょうか*.xls
?
答え1
Linux バージョンでは、ワイルドカードがシェルによって展開され、一致するファイルのリストが作成されます。
Windows バージョンではファイル リストを受け入れるはずですが、cmd
これを展開することはできません。
最も簡単な答えは、次のfor
文を使用することです。
for %f in (*.xls) do "path_to_libreoffice\soffice.exe" --convert-to csv "%f"
バッチ ファイルで%f
は を に置き換える必要があることに注意してください。%%f
これは、ファイル リストを提供するよりも効率が低くなります。ファイル リストを提供する場合は、すべての変換が単一のスケジュールで実行されますが、この方法では、変換ごとに個別のスケジュールが実行されます。
ワイルドカードから単一のスケジュールとファイル リストを作成することもできますが、これには複雑なスクリプトが必要になります。代わりに、 の Windows ポートを使用することもできますbash
。