komoran12
Goto Top

Batch Leerzeichen in nur bestimmten Spalten entfernen?

Hallo, erstmal allen ein schönes Pfingstwochenende!face-smile

Ich suche gerade nach einer Möglichkeit per Batch in einer Csv mit mehrerer Spalten,
nur in den ersten beiden Spalten %%a & %%b die Leerzeichen zu entfernen, geht sowas?

VG

Content-ID: 339807

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

Ausgedruckt am: 23.11.2024 um 16:11 Uhr

133417
Lösung 133417 04.06.2017 aktualisiert um 21:01:12 Uhr
Goto Top
Moin.
Kannst du dir hiermit selbst beantworten:
set "test=Hallo ich habe leerzeichen" && echo %test: =%
Siehe: http://www.dostips.com/DtTipsStringManipulation.php#Snippets.Replace

In der Schleife musst du dann aber mit call set oder delayedexpansion arbeiten.
bsp.
@echo off
for /f "usebackq delims=;" %%a in ("C:\datei.csv") do (  
    set "spalte1=%%a"  
    set "spalte2=%%b"  
    setlocal enabledelayedexpansion
    echo(!spalte1: =!
    echo(!spalte2: =!
    endlocal
)
Ich würde für CSV-Dateien trotzdem die Powershell bevorzugen, schon wegen Umlaut&Co und Zeilenlängenbegrenzung in Batch, Behandlung von aufeinanderfolgende Trennzeichen etc. pp. Damit ist das viel konsistenter.

In Powershell sieht das bspw. so aus
$csv  = Import-CSV 'C:\daten.csv' -Delimiter ";"  
$csv | %{
    $_.'Spalte1' = $_.'Spalte1'.replace(' ','')  
    $_.'Spalte2' = $_.'Spalte2'.replace(' ','')  
}
$csv
Spaltennamen natürlich an die verwendeten anpassen.

Gruß Bibersbaum
Pjordorf
Pjordorf 04.06.2017 um 20:42:57 Uhr
Goto Top
Hallo,

Zitat von @Komoran12:
in einer Csv mit mehrerer Spalten,
Eine .csv hat keine Spalten. Erst dein Anzeigeprogramm z.B. Excel macht Spalten daraus, nämlich dort wo das trennzeichen ist welches für diese Datei vorgesehen wurde. Die Trennzeichen z.B. ; definieren wo deine Spalten sind. z.B. "Ich";"war;;;""hier". Da sind 2 Spalten definiert.

nur in den ersten beiden Spalten %%a & %%b die Leerzeichen zu entfernen, geht sowas?
Nimm Excel.

Wie genau sieht denn deine .csv tatsächlich innen drin aus? Ansicht nicht mit Worpad oder Editoren die einige Zeichen anders Darstellen als diese tatsächlich enthalten sind. z. Notepad++ oder Norton Comander oder FAR Managar.

Danach kannst du dran gehen deine aufeinanderfolgenden Trennzeichen zu entfernen. Enthalten diese Spalten etwa auch noch Werte dann einfach alles bis zum 3ten Feldtrennzeichen (Delimiter) entfernen und die restlichen Zeile abspeichern usw.

CSV mit batch bearbeiten - auslesen
CSV Datei auslesen per Batch
CSV per Batch bearbeiten und als neue csv speichern
Per BAT CSV bestimmte Spalten und Zeilen auslesen und übertragen
Spalten in einer .csv anders anordnen oder tauschen

Und wie ist es das ganze per Powershell zu machen?

Gruß,
Peter