dahartl
Goto Top

Leerzeichen per Batch entfernen vor der Weiterbearbeitung

Hallo zusammen,

gibt es eine Möglichkeit, per Batch alle Leerzeichen in einem Dateinamen durch "-" zu ersetzten?
Das Leerzeichen ist nicht immer an der gleichen Stelle!

Hab hier einen Copy-Joby, welcher abbricht, wenn die Datei ein Leerzeichen inne hat!
set workdir=c:\temp\import\
set files=

dir %workdir% /A-D/B/OGD>%temp%files.tmp
for /f "tokens=1* delims=" %%i in (%temp%files.tmp) do if not defined files set "files=%%i"  
del %temp%files.tmp

echo %files%
copy %workdir%%files% c:\temp\import\ImportFile.csv

Beispieldateinamen: "Import 1.csv" "Im port2.csv" "Import3 .csv"
gehofftes Ergebnis: "Import_1.csv" "Im_port2.csv" "Import3_.csv"

Vielen Dank für die Hilfe!

da Hartl

Content-ID: 305218

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

Ausgedruckt am: 25.11.2024 um 03:11 Uhr

Biber
Lösung Biber 23.05.2016 um 17:00:09 Uhr
Goto Top
Moin daHartl,

sicherlich lassen sich auch per Batch Leerzeichen durch "_" oder alle "x" durch "u" ersetzen.

Schneller geht es aber, wenn du dieses hier
copy %workdir%%files% c:\temp\import\ImportFile.csv

ersetzt durch
copy "%workdir%%files%" c:\temp\import\ImportFile.csv

Also einfach alle "Pfade/und/Dateien mit eventuellen Leerzeichen" in Anführungszeichen setzt, damit diese als EIN Parameter erkannt werden.

Grüße
Biber
daHartl
daHartl 24.05.2016 um 09:53:37 Uhr
Goto Top
Vielen Dank Biber für die Lösung!!! Funktioniert einwandfrei!

kannst mir ggf. noch sagen, wie man

" sicherlich lassen sich auch per Batch Leerzeichen durch "_" oder alle "x" durch "u" ersetzen"
realisieren könnte?

Also z.B. dass "Import 1.csv" in "Import_1.csv", "Im port2.csv" in "Im_port2.csv" und "I mport3.csv" in "I_mport3.csv"

Vielen Dank im Voraus
Biber
Biber 24.05.2016 um 10:10:24 Uhr
Goto Top
Moin daHartl,

die Syntax dafür kannst du in der Hilfe zu Set (Set /?) nachlesen.

...
Das Ersetzen von Umgebungsvariablen wurde folgendermaßen erweitert:

    %PATH:str1=str2%

Dies erweitert die PATH-Umgebungsvariable, wobei jede Instanz von "str1" im
erweiterten Ergebnis mit "str2" ersetzt wird. ....

Demo am CMD-Prompt:
C:\Users\Biber>set "StrMitSpace=Ein String mit Spaces"  

C:\Users\Biber>echo StrMitSpace=[%StrMitSpace%] Ersetzt=[%StrMitSpace: =_%]
StrMitSpace=[Ein String mit Spaces] Ersetzt=[Ein_String_mit_Spaces]

Grüße
Biber