LibreOfficeを使用してxlsをcsvに一括変換する

LibreOfficeを使用してxlsをcsvに一括変換する

以下は正常に動作します:

"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

関連情報