Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch File - Zeile auslesen aus Datei und verändern (mit langen Dateinamen)

Frage Entwicklung Batch & Shell

Mitglied: windwind12

windwind12 (Level 1) - Jetzt verbinden

20.02.2006, aktualisiert 22:32 Uhr, 13064 Aufrufe, 4 Kommentare

[Edit] Beitrag auf "Gelöst" gesetzt am 5.3. 2006 Biber [/Edit]

Hallo Leute!

Ich habe ein Problem mit meinen Batch File ... es checkt irgendwie nicht die Leerzeichen ... und die Sonderzeichen ...
Verwendet wird ein Windows 2000/XP/2003

Vorgabe ist ein Text File namens pst.txt
=== Inhalt Anfang ===
D:\BACKUP\Daten\Bereiche\Pawlik\xuser\PC\pawlik\Local Settings\Anwendungsdaten\Microsoft\Outlook\archive.pst
D:\BACKUP\Daten\Bereiche\Reithofer\Outlook\CDC.pst
D:\BACKUP\Daten\Bereiche\Reithofer\Outlook\Kontakte.pst
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2005.pst
=== Inhalt Ende ===


Das Batch File soll die Datei Zeile für Zeile einlesen und abändern für einen Kopierjob als SET Varaiblen (mit oder ohne "" ist egal)

Quelle = D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst
Ziel = Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2004.pst

Derzeitiges Ergebnis ...
Quelle "D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up"
Ziel "Bereiche\Schneeweiss\back_up""


Das Problem ist, das er nicht mit den Leerzeichen zurechtkommt und einfach abschneidet.
Zusätzlich sollen auch die Sonderzeichen ß passen und die "

=== Meine Batch Datei Anfang ===
@echo off

FOR /f %%f IN (pst.txt) DO call :loop "%%f"
goto ende

:loop
set Quelle=%1
Set Ziel="%Quelle:~17%"
echo Quelle %Quelle%
echo Ziel %Ziel%
echo.
rem xcopy %Quelle% %Ziel% /d /y
goto :eof

:ende
pause
=== Meine Batch Datei Ende ===


Kann mir jemand hier helfen?

Danke ganz lieb
windwind12
Mitglied: powerbond007
20.02.2006 um 17:26 Uhr
Du musst einfach jede Zeile in der Textdatei in Anführungszeichen setzten.
Bitte warten ..
Mitglied: windwind12
20.02.2006 um 18:56 Uhr
klappt nicht ...

da kommt folgendes raus ...

Quelle ""D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up"
Ziel "\Bereiche\Schneeweiss\back_up" "

Trotzdem Danke ... einen Versuch war es wert
windwind12
Bitte warten ..
Mitglied: Biber
20.02.2006 um 20:05 Uhr
Na, windwind12,
da sind mehrere kleine Stolpersteinchen drin, aber lösbar ist es...

1. Miniproblem - trailing blanks
In der Textdatei pst.txt (die ja wahrscheinlich auch über eine DIR-Output mit Umleitung erzeugt wird), sind trailing blanks, also überflüssige Leerzeichen am Ende enthalten. Die bringen alles etwas durcheinander.
Also: falls ihr die Textdatei erzeugt mit
Dir /s /b D:\BACKUP\Daten\Bereiche\*.pst >pst.txt
dann nehmt das Leerzeichen vor dem Größerzeichen raus(Minimallösung)
-oder- (advanced) schreibt ein Semikolon am Ende
Dir /s /b D:\BACKUP\Daten\Bereiche\*.pst;>pst.txt
--Problem gelöst-
2. Miniproblem - Anführungszeichen
Die Anführungszeichen...wo setzen, wo explizit wegnehmen
Mein Vorschlag:
FOR /f "delims=" %%f IN (pst.txt) DO call :loop "%%f"
goto ende

:loop
set "Quelle=%~1"
Set "Ziel=%Quelle:~17%"
:: Ziel und Quelle jetzt beide OHNE Anführungszeichen
@echo Quelle: [%Quelle%]
@echo Ziel: [%Ziel%]
echo.
rem xcopy "%Quelle%" "%Ziel%" /d /y
goto :eof

:ende
pause

Dann passt es besser.
Alternativ, falls ihr die Semikolon-Variante nehmt:
FOR /f "delims=;" %%f IN (pst.txt) DO call :loop "%%f"

3. Miniproblem - die Umlaute bzw das "deutsche SZ" bei "Schneeweiß"
- entweder die *.bat- und *.txt -Dateien im gleichen Zeichensatz bearbeiten.
Meistens hilft ein "CHCP 1252" am CMD-Prompt.
Dann "kennt" die CMD.exe die Windows-Umlaute
- oder (mir wäre so ein "meistens" zu wackelig) legt doch gleich die "kurzen" Pfad-und Dateinamen an beim Schreiben der pst.txt.
Dann steht da statt
D:\BACKUP\Daten\Bereiche\Schneeweiss\back_up Outlook\Schneeweiß OUTLOOK\Schneeweiss2005.pst
--von Anfang an gleich
D:\BACKUP\Daten\Bereiche\Schnee~1\back_u~1\Schnee~1\Schnee~1.pst

...und ihr habt gar keine Miniprobleme mehr.

HTH Biber
Bitte warten ..
Mitglied: windwind12
20.02.2006 um 22:32 Uhr
Vielen Vielen Vielen ... Dank Biber!!!

Auf das mit dem kurzen Zeichen wäre ich nie gekommen (Seh den Wald vor lauter Bäumen nicht mehr).
Werde das gleich morgen in der Firma testen ...
Meine DOS Kentnisse sind auch schon ziemlich eingerostet ...

Edit: Das mit den kurzen Zeichen geht nicht .... aber der Rest funktioniert super! Danke!
Genau das was ich brauche.

Windwind12
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen (5)

Frage von dh0815 zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateinamen auslesen und in einer Schleife benutzen (12)

Frage von TeholBeddict zum Thema Batch & Shell ...

Batch & Shell
Zeile eine Datei per batch ersetzen (2)

Frage von duckknight zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
Kennwort vergessen bei Hyper vserver 2012r (12)

Frage von jensgebken zum Thema Windows Server ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (11)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Userverwaltung
gelöst Administrator hat alle Rechte verloren (10)

Frage von mrdead zum Thema Windows Userverwaltung ...