kingcoollui
Goto Top

Sonderzeichen in Batch maskieren

Exposés in Dateipfad der batch verursacht Fehler

Hallo zusammen,

habe ein riesen Problem.

Habe in meinem Dateipfad C:\ServerDaten\Exposés.
Das steht jetzt so in der Batchdatei. Probelm die Batch kann ´ dieses Zeichen nicht interpretieren.
Wie kriege ich dieses Sondernzeichen Maskiert? Oder gibt es auch eine andere Möglichkeit.

Was ich auch bräuchte, wie kann ich eine Logdatei erzeugen, die Fehler beim Ausführen, oder generell ein Protokoll was passiert erstellt?

Muss sagen bin ein absoluter DAU was Batch angeht.

Hier der Inhalt der Batchdatei (für Verbesserungen bin ich jederzeit offen - vorallem Vereinfachungen):

@echo off
REM ------------------------------------------------------------
REM Name: xxx.bat
REM Autor: xxx
REM Datum: 23. Juli 2009
REM ------------------------------------------------------------
echo.
echo ------------------------------------
echo Einspielung der Arbeitsdateien
echo.
echo fuer WIN2000
echo.
echo Bitte Warten...
echo ------------------------------------
echo.
echo.
cls
echo ...Daten-Einspielung beginnt...
xcopy "C:\ServerDaten\Arbeitsordner\A"\*.* "C:\ServerDaten\Exposés\A"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\B"\*.* "C:\ServerDaten\Exposés\B"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\C"\*.* "C:\ServerDaten\Exposés\C"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\D"\*.* "C:\ServerDaten\Exposés\D"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\E"\*.* "C:\ServerDaten\Exposés\E"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\F"\*.* "C:\ServerDaten\Exposés\F"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\G"\*.* "C:\ServerDaten\Exposés\G"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\H"\*.* "C:\ServerDaten\Exposés\H"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\I"\*.* "C:\ServerDaten\Exposés\I"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\J"\*.* "C:\ServerDaten\Exposés\J"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\K"\*.* "C:\ServerDaten\Exposés\K"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\L"\*.* "C:\ServerDaten\Exposés\L"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\M"\*.* "C:\ServerDaten\Exposés\M"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\N"\*.* "C:\ServerDaten\Exposés\N"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\O"\*.* "C:\ServerDaten\Exposés\O"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\P"\*.* "C:\ServerDaten\Exposés\P"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\Q"\*.* "C:\ServerDaten\Exposés\Q"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\R"\*.* "C:\ServerDaten\Exposés\R"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\S"\*.* "C:\ServerDaten\Exposés\S"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\Sch"\*.* "C:\ServerDaten\Exposés\Sch"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\T"\*.* "C:\ServerDaten\Exposés\T"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\U"\*.* "C:\ServerDaten\Exposés\U"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\V"\*.* "C:\ServerDaten\Exposés\V"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\W"\*.* "C:\ServerDaten\Exposés\W"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\XY"\*.* "C:\ServerDaten\Exposés\XY"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\Z"\*.* "C:\ServerDaten\Exposés\Z"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\Exposévorlagen"\*.* "C:\ServerDaten\Exposés\Exposévorlagen"\*.* /e /v /s /y
xcopy "C:\ServerDaten\Arbeitsordner\Investment"\*.* "C:\ServerDaten\Investment\D"\*.* /e /v /s /y
echo.
echo ...Einspielung der Dateien ist beendet
echo.
echo Ordner wird geleert
echo.
del "C:\ServerDaten\Arbeitsordner\A"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\B"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\C"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\D"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\E"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\F"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\G"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\H"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\I"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\J"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\K"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\L"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\M"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\N"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\O"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\P"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\Q"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\R"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\S"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\Sch"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\T"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\U"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\V"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\W"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\XY"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\Z"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\Exposévorlagen"\*.* /s /q
del "C:\ServerDaten\Arbeitsordner\Investment"\*.* /s /q
echo Ordner erfolgreich geleert
echo.
echo Loesche temporaere Dateien in Exposés
echo.
del "C:\ServerDaten\Exposés\A"\*.tmp /s /q
del "C:\ServerDaten\Exposés\B"\*.tmp /s /q
del "C:\ServerDaten\Exposés\C"\*.tmp /s /q
del "C:\ServerDaten\Exposés\D"\*.tmp /s /q
del "C:\ServerDaten\Exposés\E"\*.tmp /s /q
del "C:\ServerDaten\Exposés\F"\*.tmp /s /q
del "C:\ServerDaten\Exposés\G"\*.tmp /s /q
del "C:\ServerDaten\Exposés\H"\*.tmp /s /q
del "C:\ServerDaten\Exposés\I"\*.tmp /s /q
del "C:\ServerDaten\Exposés\J"\*.tmp /s /q
del "C:\ServerDaten\Exposés\K"\*.tmp /s /q
del "C:\ServerDaten\Exposés\L"\*.tmp /s /q
del "C:\ServerDaten\Exposés\M"\*.tmp /s /q
del "C:\ServerDaten\Exposés\N"\*.tmp /s /q
del "C:\ServerDaten\Exposés\O"\*.tmp /s /q
del "C:\ServerDaten\Exposés\P"\*.tmp /s /q
del "C:\ServerDaten\Exposés\Q"\*.tmp /s /q
del "C:\ServerDaten\Exposés\R"\*.tmp /s /q
del "C:\ServerDaten\Exposés\S"\*.tmp /s /q
del "C:\ServerDaten\Exposés\Sch"\*.tmp /s /q
del "C:\ServerDaten\Exposés\T"\*.tmp /s /q
del "C:\ServerDaten\Exposés\U"\*.tmp /s /q
del "C:\ServerDaten\Exposés\V"\*.tmp /s /q
del "C:\ServerDaten\Exposés\W"\*.tmp /s /q
del "C:\ServerDaten\Exposés\XY"\*.tmp /s /q
del "C:\ServerDaten\Exposés\Z"\*.tmp /s /q
del "C:\ServerDaten\Exposés\Exposévorlagen"\*.tmp /s /q
del "C:\ServerDaten\Exposés\Investment"\*.tmp /s /q
echo
echo Loeschen der temporaeren Dateien erfolgreich abgeschlossen
echo.
exit

Ach bevor ich es vergessen, ist ein Windows 2000 Server mit SP4.

Danke bereits jetzt für eure Hilfe!

Grüße

Lui

Content-ID: 121853

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

Ausgedruckt am: 18.11.2024 um 03:11 Uhr

rubberman
rubberman 02.08.2009 um 23:17:02 Uhr
Goto Top
Hallo kingcoollui,

setze vor jeden Block in dem Exposés vorkommt die Zeile
chcp 1252>nul
und hinter den Block
chcp 850>nul
Das ändert sie Codepage auf ANSI und wieder zurück auf ASCII. Somit werden die Zeichen genauso interpretiert, wie sie im Texteditor angezeigt werden.
Um ein Logfile zu schreiben, könntest du nach jeder Zeile den Errorlevel abfragen um zu sehen ob alles OK war. Alternativ könnterst du nur die Fehlerausgabe an die Datei umleiten indem du zB. 2>>Err.log hinter jede Zeile schreibst. (Mit "jede Zeile" meine ich natürlich immer die relevanten)
kingcoollui
kingcoollui 02.08.2009 um 23:30:39 Uhr
Goto Top
Hi rubbermann,

super geil!

Danke für die extrem schnelle Antwort. Habs gleich ausprobiert. Funktioniert 1A!!!

Hast mir den Sonntag abgend gerettet.

Beste Grüße

Lui
rubberman
rubberman 02.08.2009 um 23:34:33 Uhr
Goto Top
Gern geschehen face-wink

Grüße
rubberman
77559
77559 03.08.2009 um 11:17:08 Uhr
Goto Top
Hallo Lui,

ein paar Anmerkungen zu der Batchdatei

  • Statt einem Xcopy Source Dest und anschließendem Del Source schlage ich vor, Move zu benutzen. Auf dem gleichen Datenträger sollte das um Größenordnungen schneller sein, da nur der Index geändert wird.
  • Redundanz bei den Befehlen kann Fehler erzeugen (Die Zeile mit Investment weicht ab), besser ist eine Schleife mit:
For %%A in (A B C D E F G H I J K L M N O P Q R S SCH T U V W XY Z Exposévorlagen
) Do Move  "C:\ServerDaten\Arbeitsordner\%%A\*" "C:\ServerDaten\Exposés\%%A\"  /y  

Gruß
LotPings