Umlaute beim Dateinamenexportieren in Excel?
Servus,
ich gehe davon aus, dass das für euch nicht so ein großes Problem darstellen wird
ich habe eine Batch geschrieben, die mir die Ordner in einem bestimmten Verzeichnis, in einer Excel-Datei ausgibt.
PROBLEM:
wie muss der Code aussehen, damit in der Excel-Datei auch die Umlaute der Ordnernamen angezeigt werden und nicht durch ein " dargestellt werden (ja ich weiss, Ordnernamen immer ohne Umlaute.. )
Commandozeile sieht so aus:
dir X:\Root/b/-p> C:\Name_%date%.xls
Danke schonmal!
ich gehe davon aus, dass das für euch nicht so ein großes Problem darstellen wird
ich habe eine Batch geschrieben, die mir die Ordner in einem bestimmten Verzeichnis, in einer Excel-Datei ausgibt.
PROBLEM:
wie muss der Code aussehen, damit in der Excel-Datei auch die Umlaute der Ordnernamen angezeigt werden und nicht durch ein " dargestellt werden (ja ich weiss, Ordnernamen immer ohne Umlaute.. )
Commandozeile sieht so aus:
dir X:\Root/b/-p> C:\Name_%date%.xls
Danke schonmal!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 149727
Url: https://administrator.de/contentid/149727
Ausgedruckt am: 05.11.2024 um 06:11 Uhr
6 Kommentare
Neuester Kommentar
Moin datenfluss,
Excel wird bei dir vermutlich unter Windows laufen und somit die "Codepage 1252" verwenden und erwarten.
"Erwarten" heißt: davon ausgehen, wenn es (Excel) zum Öffnen eine *.xls-Datei gezwungen wird, dass dann auch *.xls-bzw. Windows bzw Codepage-1252-Zeichen vorliegen.
Darus ergibt sich eine zweigeteilte Antwort.
a) Du kannst aus deinem Einzeiler einen Zweizeiler machen und vor der DIR-Anweisung ein "CHCP 1252" (Change CodePage auf..) machen.
[Details siehe Forumssuche "CHCP" und/oder "Chcp /?" am CMD-Prompt.
b) du solltest dennoch nicht eine ".xls"-Datei erzeugen, sondern dass, was du vom CMD-Prompt kannst, eine *.txt oder .csv-Datei.
Mit beiden kann Excel excellent umgehen (kleines Wortspiel), insbesondere *.csv-Dateien sind für so etwas wie deine Anforderung gedacht.
Auch hier wieder: Details über unsere Suchfunktion.
Grüße
Biber
Excel wird bei dir vermutlich unter Windows laufen und somit die "Codepage 1252" verwenden und erwarten.
"Erwarten" heißt: davon ausgehen, wenn es (Excel) zum Öffnen eine *.xls-Datei gezwungen wird, dass dann auch *.xls-bzw. Windows bzw Codepage-1252-Zeichen vorliegen.
Darus ergibt sich eine zweigeteilte Antwort.
a) Du kannst aus deinem Einzeiler einen Zweizeiler machen und vor der DIR-Anweisung ein "CHCP 1252" (Change CodePage auf..) machen.
[Details siehe Forumssuche "CHCP" und/oder "Chcp /?" am CMD-Prompt.
b) du solltest dennoch nicht eine ".xls"-Datei erzeugen, sondern dass, was du vom CMD-Prompt kannst, eine *.txt oder .csv-Datei.
Mit beiden kann Excel excellent umgehen (kleines Wortspiel), insbesondere *.csv-Dateien sind für so etwas wie deine Anforderung gedacht.
Auch hier wieder: Details über unsere Suchfunktion.
Grüße
Biber
Moin datenfluss,
im Moment hat deine erzeugte *.csv-Datei ja nur eine (durch DIR /b x:\root erzeugte) Spalte mit den Dateinamen.
Um eine Spalte mit dem letzten Änderungsdatum anzufügen würde eine einfache FOR-Anweisung ausreichen:
{Beispiel am CMD-Prompt; Ausgabe erstmal nur auf Bildschirm]
So weit, so simpel... allerdings wird so das Änderungsdatum, nicht das Erstellungsdatum zurückgegeben.
Falls es wirklich das Erstellungsdatun sein soll/muss, dann lässt sich dieses über den DIR-Schalter /tc wie time created anzeigen.
dann ist allerdings statt einer einfachen FOR-Anweising eine FOR/F-Anweisung nötig.
Wieder zum Rantasten am CMD-Prompt:
[ungetestet]
Falls das Ergebnis erfolgversprechend aussieht:
Grüße
Biber
im Moment hat deine erzeugte *.csv-Datei ja nur eine (durch DIR /b x:\root erzeugte) Spalte mit den Dateinamen.
Um eine Spalte mit dem letzten Änderungsdatum anzufügen würde eine einfache FOR-Anweisung ausreichen:
{Beispiel am CMD-Prompt; Ausgabe erstmal nur auf Bildschirm]
for %i in (x:\root) do @echo %i;%~ti
So weit, so simpel... allerdings wird so das Änderungsdatum, nicht das Erstellungsdatum zurückgegeben.
Falls es wirklich das Erstellungsdatun sein soll/muss, dann lässt sich dieses über den DIR-Schalter /tc wie time created anzeigen.
dann ist allerdings statt einer einfachen FOR-Anweising eine FOR/F-Anweisung nötig.
Wieder zum Rantasten am CMD-Prompt:
for /f "delims=" %i in ('dir /b /a-d /tc x:\root') do @echo %i;%~ti
Falls das Ergebnis erfolgversprechend aussieht:
- im Batch die Prozentzeichen verdoppeln
- zur Umleitung der Ausgabe die komplette Zeile in runde Klammern setzen und ein ">y:\pfad\einName.csv" anfügen.
Grüße
Biber
Moin datenfluss,
eigentlich hatte ich die Beantwortung deiner Frage schon in meinem letzten Kommentar versucht...
Gemeint war mit den beiden unteren Spiegelstrichen
-> Wenn die CMD-Prompt-Zeile so aussähe
-> würde eine Batchdatei unter Anwendung der beiden Schritte so aussehen
Testen mit einer "Ausgabedatei" nur auf dem Monitor kannst du es so:
Anmerkung:
- Wenn das Änderungsdatum und nicht das Erstellungsdatum interessiert, dann einfach den DIR-Schalter /tc weglassen.
- Ob das ">%outfile" vor oder nach der eingeklammerten FOR-Anweisung steht ist egal.. mach es so, wie es für dich besser "lesbar" ist.
Grüße
Biber
eigentlich hatte ich die Beantwortung deiner Frage schon in meinem letzten Kommentar versucht...
Gemeint war mit den beiden unteren Spiegelstrichen
- im Batch die Prozentzeichen verdoppeln
- zur Umleitung der Ausgabe die komplette Zeile in runde Klammern setzen und ein ">y:\pfad\einName.csv" anfügen.
-> Wenn die CMD-Prompt-Zeile so aussähe
for /f "delims=" %i in ('dir /b /a-d /tc x:\root') do @echo %i;%~ti
-> würde eine Batchdatei unter Anwendung der beiden Schritte so aussehen
(for /f "delims=" %%i in ('dir /b /a-d /tc x:\root') do @echo %%i;%%~ti) >y:\pfad\einName.csv
Testen mit einer "Ausgabedatei" nur auf dem Monitor kannst du es so:
::---Inhalt einer Filelist2csv.cmd
@echo off & setlocal
if [%*] == set "outfile=con"
>%outfile% (for /f "delims=" %%i in ('dir /b /a-d /tc x:\root') do @echo %%i;%%~ti)
Anmerkung:
- Wenn das Änderungsdatum und nicht das Erstellungsdatum interessiert, dann einfach den DIR-Schalter /tc weglassen.
- Ob das ">%outfile" vor oder nach der eingeklammerten FOR-Anweisung steht ist egal.. mach es so, wie es für dich besser "lesbar" ist.
Grüße
Biber