CSV Manipulation Batch oder PS
pausenbrotnascher (Level 1) - Jetzt verbinden
14.01.2021 um 10:03 Uhr, 289 Aufrufe, 6 Kommentare, 1 Danke
Guten Morgen allerseits,
ich bin zwar neu in diesem Forum, möchte mich aber künftig in der Community einfinden, aber wie jeder User habe ich zunächst eine Frage, womit ich dringend Hilfe benötige, da ich absolut auf dem Schlauch stehe.
Ausgangssituation:
Ich benötige ein Batch oder Powershell Script, welches eine CSV einliest und in einer Spalte (C,3) die Kommas entfernt, da in der restlichen Datei keine Kommas entfernt werden dürfen. Mein Delimiter ist hierbei ";".
Ich habe bereits Ansätze versucht, komme aber leider nie zu dem gewünschten Ergebnis, auch unter dem Gesichtspunkt, dass ich immer wieder was ändere und schaue was mir die generierte CSV ausspuckt, bisher aber leider nichts was ich verarbeiten könnte:
Oder bin ich mit meinem bisherigen Fortschritt völlig auf dem Holzweg ?
Viele Grüße und Danke im Voraus
PS: Leider bin ich mit Powershell noch ungeübter und hoffe dass ihr mir das verzeihen könnt. Würde auch einen Kaffee spendieren, wenn mir jemand nettes der mir hilft
ich bin zwar neu in diesem Forum, möchte mich aber künftig in der Community einfinden, aber wie jeder User habe ich zunächst eine Frage, womit ich dringend Hilfe benötige, da ich absolut auf dem Schlauch stehe.
Ausgangssituation:
Ich benötige ein Batch oder Powershell Script, welches eine CSV einliest und in einer Spalte (C,3) die Kommas entfernt, da in der restlichen Datei keine Kommas entfernt werden dürfen. Mein Delimiter ist hierbei ";".
Ich habe bereits Ansätze versucht, komme aber leider nie zu dem gewünschten Ergebnis, auch unter dem Gesichtspunkt, dass ich immer wieder was ändere und schaue was mir die generierte CSV ausspuckt, bisher aber leider nichts was ich verarbeiten könnte:
@echo off
SETLOCAL enabledelayedexpansion
REM Quellpfad
SET "quell_datei=count_export.csv"
REM Zielpfad
SET "ziel_datei=count_export_final.csv"
REM diese Zeichenfolge wird gesucht : Kommata
SET "suchen_nach=,"
REM Funde werden ersetzt durch : nix / überschrieben / Komma wird entfernt
SET "ersetzen_durch="
REM Hinweis wenn suchen_nach nicht gesetzt wurde
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)
REM Lösche Zieldatei, falls bereits vorhanden
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)
REM Quelldatei zeilenweise auslesen und in Variable "zeile" schreiben
for /f "usebackq tokens=1-3 delims=;" %%i in ('findstr /n "," "count_export.csv"') do @(
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :weiter
:ersetzen
REM Inhalt von 'suchen_nach' suchen + "ersetzen_durch" durchführen
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
GOTO :eof
Viele Grüße und Danke im Voraus
PS: Leider bin ich mit Powershell noch ungeübter und hoffe dass ihr mir das verzeihen könnt. Würde auch einen Kaffee spendieren, wenn mir jemand nettes der mir hilft
6 Antworten
- LÖSUNG 147069 schreibt am 14.01.2021 um 10:08:19 Uhr
- LÖSUNG pausenbrotnascher schreibt am 14.01.2021 um 11:07:46 Uhr
- LÖSUNG 147069 schreibt am 14.01.2021 um 11:11:29 Uhr
- LÖSUNG pausenbrotnascher schreibt am 14.01.2021 um 11:16:11 Uhr
- LÖSUNG 147069 schreibt am 14.01.2021 um 11:22:02 Uhr
- LÖSUNG pausenbrotnascher schreibt am 14.01.2021 um 12:07:28 Uhr
- LÖSUNG 147069 schreibt am 14.01.2021 um 11:22:02 Uhr
- LÖSUNG pausenbrotnascher schreibt am 14.01.2021 um 11:16:11 Uhr
- LÖSUNG 147069 schreibt am 14.01.2021 um 11:11:29 Uhr
- LÖSUNG pausenbrotnascher schreibt am 14.01.2021 um 11:07:46 Uhr
LÖSUNG 14.01.2021, aktualisiert um 10:09 Uhr
LÖSUNG 14.01.2021, aktualisiert um 11:15 Uhr
LÖSUNG 14.01.2021, aktualisiert um 11:14 Uhr
Du musst die Skriptausführung einmalig über die Executionpolicy in einer elevated Powershell freischalten.
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...
Oder alternativ das Skript über Bypass aufrufen
Gruß bw.
Set-Executionpolicy RemoteSigned
Oder alternativ das Skript über Bypass aufrufen
powershell -EP Bypass -File "D:\script.ps1"
LÖSUNG 14.01.2021 um 11:16 Uhr
LÖSUNG 14.01.2021, aktualisiert um 11:26 Uhr
Zitat von pausenbrotnascher:
Ja stimmt, ich hatte das schon nachgeschaut und mit Bypass hat es geklappt. Stellt das dahingehend ein Sicherheitsrisiko dar ?
Mit generellen Änderung der Policy natürlich auch. Wenn du dein Skript auch für andere bearbeitbar ablegst und das ganze mit nem elevated Account machst dann ja Ja stimmt, ich hatte das schon nachgeschaut und mit Bypass hat es geklappt. Stellt das dahingehend ein Sicherheitsrisiko dar ?
p.s. Danke auch nochmal für den Kaffee ! 👍
Bleib gesund.
bw.
LÖSUNG 14.01.2021 um 12:07 Uhr
Okay ja das habe ich mir gedacht. Ich werde mich damit auch noch mal in Ruhe auseinandersetzen. Momentan ist der Server so oder so nicht von außen erreichbar. Aber dennoch heißt das ja nicht, dass man da die Sicherheit vernachlässigen kann.
Gerne, das hast Du Dir redlich verdient und bleib auch gesund !
Gruß
Gerne, das hast Du Dir redlich verdient und bleib auch gesund !
Gruß