datenfluss
Goto Top

Umlaute beim Dateinamenexportieren in Excel?

Servus,

ich gehe davon aus, dass das für euch nicht so ein großes Problem darstellen wird face-smile
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.. face-smile )

Commandozeile sieht so aus:

dir X:\Root/b/-p> C:\Name_%date%.xls

Danke schonmal!

Content-Key: 149727

Url: https://administrator.de/contentid/149727

Ausgedruckt am: 28.03.2024 um 21:03 Uhr

Mitglied: Biber
Biber 25.08.2010 um 17:22:34 Uhr
Goto Top
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
Mitglied: datenfluss
datenfluss 10.09.2010 um 10:33:25 Uhr
Goto Top
servus biber!

danke erstmal für die Antwort! hat super funktioniert, und ich hab die Datei umgeschrieben auf ne .csv.

musste ein bisschen schmunzeln bei dem Wortspiel :D

jetzt noch eiiine Frage:

Kann man das so umsetzen, dass in der Ausgabedatei noch das Erstelldatum der Datei in ner Spalte ausgegeben wird? Wenn ja, wie? face-smile

danke!
Mitglied: Biber
Biber 10.09.2010 um 23:08:13 Uhr
Goto Top
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]
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
[ungetestet]

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
Mitglied: datenfluss
datenfluss 15.09.2010 um 12:37:47 Uhr
Goto Top
Servus,

ja das Änderungsdatum ist schon richtig! face-smile

ok, das hat soweit funktioniert. aaaaber, wie füge ich "for %i in (x:\root) do @echo %i;%~ti" jetz in der batch datei ein, dass er mir in der ausgabedatei hinter jedem ausgegebenen ordner in der nächsten spalte das änderungsdatum anzeigt? face-smile

klingt bissi kompliziert ich weiss face-smile

danke noch/schon mal!#

gruß
dennis
Mitglied: Biber
Biber 20.09.2010 um 12:56:04 Uhr
Goto Top
Moin datenfluss,

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
Mitglied: datenfluss
datenfluss 20.01.2011 um 10:02:29 Uhr
Goto Top
merci chef! hat funktioniert ;)