loonie
Goto Top

Unterstrich und Blanks aus Dateinamen entfernen

Hallo,

ich möchte über das Kontextmenu eine Datei per FTP an einen Großrechner versenden. Soweit kein Problem, Ablage der Batchdateien im SendTo-Verzeichnis. Dabei wird der Dateiname auf dem Host aus den ersten 7 Stellen des lokalen Dateinamens gebildet. Dort sind nur 8 Zeichen pro Stufe zugelassen. Die erste Stelle jeder Stufe darf keine Zahl sein, daher nehm ich nur die ersten sieben und setze ein F davor. So weit so gut...

Allerdings sind im Dateinamen auf dem Host bestimmte Zeichen nicht zugelassen, z.B. Blanks und Unterstriche. Wie kann ich aus der Datei 123_test.txt --> 123test machen, also aus der Variablen %myDateik% Blank und Unterstrich entfernen?

set mypfad=%temp%
set myftpfile=%mypfad%\download1.txt
set myuser=User123
set mypassword=topsecret
set "myDatei=%~n1"  
set "myDateik=%myDatei:~0,7%"  
echo %myuser% > %myftpfile%
echo %mypassword% >> %myftpfile%
echo quote site sbd=(ibm-273,iso8859-1) >> %myftpfile%
echo put %1 '%myuser%.FTPANSI.F%myDateik%' >> %myftpfile%  
echo quit >> %myftpfile%
ftp -s:%myftpfile% host0815
del %myftpfile%

Was auch noch nicht funktioniert ist, wenn der Dateiname kürzer als 7 Stellen ist???

Danke und Gruß

Thomas

Content-Key: 74821

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

Printed on: April 19, 2024 at 12:04 o'clock

Member: bastla
bastla Nov 29, 2007 at 14:29:49 (UTC)
Goto Top
Hallo Loonie!

Blank und Unterstrich entfernen?
Du kannst die "Ersetzen"-Funktionalität des "set"-Befehles (siehe "set /?") dazu verwenden:
...
::Blanks entfernen
set "myDateik=%myDateik: =%"  
::Underscores entfernen
set "myDateik=%myDateik:_=%"  

Was auch noch nicht funktioniert ist, wenn der Dateiname kürzer als 7 Stellen ist?
Wie definierst Du "nicht funktioniert"?

Grüße
bastla
Member: Biber
Biber Nov 29, 2007 at 15:34:08 (UTC)
Goto Top
Moin bastla,

er meinte bestimmt, wenn der verbleibende Dateiname noch 8 Zeichen lang ist und er dann ein "F" vor den Namen setzt, dann kann der FTP-Transfer nicht klappen.
Weil "F"+8 Zeichen = 9 Zeichen --> bei max. 8 Zeichen je Pointerstufe auf dem Host->#TILT#.

Vielleicht sollte man/frau den "verbleibenden Namen" ähnlich wie oben nochmals kürzen?
... echo put %1 '%myuser%.FTPANSI.F%myDateik:~0,6%'   
...

Grüße
Biber
Member: bastla
bastla Nov 29, 2007 at 15:44:05 (UTC)
Goto Top
@Biber
... der verbleibende Dateiname noch 8 Zeichen lang ist ...
Da kann ich jetzt nicht mehr folgen - wenn der Dateiname bereits auf 7 Stellen gekürzt und daraus uU noch Blanks und Underscores entfernt wurden ...

Ob ein Kürzen außerdem wirklich Abhilfe schafft, wenn das Problem als "... wenn der Dateiname kürzer als 7 Stellen ist?" formuliert wurde? face-wink

Grüße
bastla
Member: Biber
Biber Nov 29, 2007 at 15:47:53 (UTC)
Goto Top
@bastla

wenn der Dateiname bereits auf 7 Stellen gekürzt wurde..
Wo wird er denn auf 7 Zeichen gekürzt? face-wink

Von 0 bis 7 sind... na??

Grüße
Biber
Member: bastla
bastla Nov 29, 2007 at 15:54:05 (UTC)
Goto Top
@Biber
set "myDateik=%myDatei:~0,7%"
Und ich hatte die 0 immer als Stelle, nach welcher der Teilstring entnommen wird, interpretiert (und auch noch das gewünschte Ergebnis erhalten - die nächste MS-Gemeinheit face-wink) ...

Grüße
bastla
Member: Loonie
Loonie Nov 30, 2007 at 20:28:33 (UTC)
Goto Top
Hey Biber, hey Bastla,

vielen Dank für die schnelle Antwort.

set "myDateik=%myDatei:~0,7%" nimmt die ersten sieben Stellen des Dateinamens. Daran lags also nicht. Das Problem ist jetzt aber auch nicht mehr aufgetreten, keine Ahnung warum oder besser warum nicht face-wink

Also vielen Dank nochmal...Schönes Wochenende

Thomas