From 88aa81ff465f4b82b0338061d5dfa6092cf54148 Mon Sep 17 00:00:00 2001 From: Oliver Jakoubek Date: Thu, 5 Mar 2026 12:05:12 +0100 Subject: [PATCH] fix: make -o flag robust against PowerShell argument splitting PowerShell splits `-o=file.xlsx` into `-o=file` + `.xlsx` as separate args. Fix: auto-append .xlsx if output has no extension, and filter out .xlsx files from input args with a helpful warning. --- main.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index e57192a..7461ccc 100644 --- a/main.go +++ b/main.go @@ -28,9 +28,15 @@ func main() { os.Exit(0) } + // PowerShell kann "-o=testdatei.xlsx" in "-o=testdatei" + ".xlsx" splitten + if filepath.Ext(*out) == "" { + *out += ".xlsx" + } + files := flag.Args() if len(files) == 0 { - fmt.Fprintln(os.Stderr, "Verwendung: csv2xlsx [flags] datei1.csv datei2.csv ...") + fmt.Fprintln(os.Stderr, "Verwendung: csv2excel [flags] datei1.csv datei2.csv ...") + fmt.Fprintln(os.Stderr, "Tipp: In PowerShell Leerzeichen statt = verwenden: -o ausgabe.xlsx") os.Exit(1) } @@ -44,6 +50,19 @@ func run(files []string, out, sep, enc string) error { xlsx := excelize.NewFile() firstSheet := true + var csvFiles []string + for _, f := range files { + if strings.EqualFold(filepath.Ext(f), ".xlsx") { + fmt.Fprintf(os.Stderr, "Warnung: %s übersprungen – Excel-Datei als Input? Meintest du: -o=%s\n", f, f) + continue + } + csvFiles = append(csvFiles, f) + } + files = csvFiles + if len(files) == 0 { + return fmt.Errorf("keine CSV-Dateien zum Verarbeiten") + } + for _, path := range files { sheetName := strings.TrimSuffix(filepath.Base(path), filepath.Ext(path))