kenny000
Goto Top

Mittels Batch Datei Zeilen in CSV-Dateien löschen und anschliessen auf ftp-server uploaden

Ich hab schon einiges im forum herumgestöbert und auch einiges ausprobiert, jedoch funktionieren diese nicht :/

Ich benötige ein Batch File die folgendes macht:
Dies sind exportierte Trennzeichen von Excel. Jede Datei besitzt so ca. 10000 zeilen wobei es vorkommt das zwischendurch einige Zeilen, so wie oben gezeigt, so ausgegeben werden.

Anschliessend sollen diese 6 bzw. 7 bearbeiteten csv.files auf den ftp-server geladen werden.

Wenn alles erfolgreich abgeschlossen ist sollte eine Meldung ausgegeben werden.

Für das bearbeiten der csv Dateien hab ich folgenden code probiert:
@ECHO off
SETLOCAL enabledelayedexpansion

REM Suchen und Ersetzen in einer Textdatei

SET "quell_datei=c:\temp\test\juhu.csv"  
SET "ziel_datei=c:\temp\juhu.csv"  
SET "suchen_nach=^|||"  
SET "ersetzen_durch="  

REM Ausgabe einer Fehlermeldung und Programmabbruch
REM falls die Variable "suchen_nach" nicht definiert ist  
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)

REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)

REM Quell-Datei zeilenweise auslesen 
REM und in Variable "zeile" schreiben  
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (  
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :weiter
:ersetzen
REM innerhalb der Variable "zeile"  
REM den Inhalt der Variable "suchen_nach" suchen  
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen  
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

ECHO Fertig^^!
wobei dieser code nur für ein file gemacht wurde, ich habe aber einen ganzen ordner voll ;)

Also den upload habe ich hinbekommen face-smile

Danke und gruss Jürgen

PS: Ist eventuell auch möglich über dieser Batch Datei ein Makro in einem Excel auszuführen?

[Edit Biber] Codefragment durch Codeformatierung lesbar gemacht. [/Edit]
Kommentar vom Moderator Biber am Jul 26, 2011 um 23:31:31 Uhr
Frage verschoben von "Windows?" nach "Batch & Shell"

Content-Key: 170458

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

Printed on: April 20, 2024 at 03:04 o'clock

Member: bastla
bastla Jul 26, 2011 at 19:28:35 (UTC)
Goto Top
Hallo kenny000 und willkommen im Forum!

findstr /v "|||" "%quelldatei%">"%zieldatei%"
verwenden - analog für alle csv-Dateien des Quellordners:
@echo off & setlocal
set "quellordner=c:\temp\test"  
set "zielordner=c:\temp\"  

pushd "%quellordner%"  
for /f "delims=" %%i in ('dir /b /a-d *.csv') do findstr /v "|||" "%%i">"%zielordner%\%%i"  
popd
Hinsichtlich des Excel-Makros: Vermutlich lässt sich das auch als VBScript erledigen - per Batch könnte ich mir nur vorstellen, ev eine Excelmappe mit enthaltenem Autostart-Makro zu öffnen ...

Grüße
bastla
Member: kenny000
kenny000 Jul 27, 2011 at 15:20:14 (UTC)
Goto Top
Hi,

supi funktioniert einwandfrei, danke für deine rasche antwort face-smile

gruss kenny