Batch - Backslash durch Slash ersetzen - Abfrage, ob der Ordner leer ist
Hallo @all,
ich schreibe monentan eine kl. Batchdatei um Dateien auf einen FTP-Server hochzuladen. Und zwar abhängig von lokalen Verzeichnisbaum. D.h. der FTP Server und die lokale Platte sind 1:1 gleich was die Struktur angeht.
D.h. die Dateien, die hochgeladen werden, müssen auf dem FTP-Server in das gleiche Verzeichnis wie lokal. An sich kein Problem, jedoch akzeptiert das FTP Command "cd" nur Slash's in Pfaden - was an sich ja nicht verkehrt ist.
Den Pfad habe ich bereits in einer Variablen und in dieser sollen nun alle Backslashes ("\") durch Slashes ("/") ersetzt werden. Ich habe es nochmal "bildlich" dargestellt:
daraus soll folgendes werden:
Ich hab mir schon diverse Schnipsel von Biber und bastla angeschaut, jedoch blick ich da nicht so ganz durch.

Gruss,
Dani
ich schreibe monentan eine kl. Batchdatei um Dateien auf einen FTP-Server hochzuladen. Und zwar abhängig von lokalen Verzeichnisbaum. D.h. der FTP Server und die lokale Platte sind 1:1 gleich was die Struktur angeht.
D.h. die Dateien, die hochgeladen werden, müssen auf dem FTP-Server in das gleiche Verzeichnis wie lokal. An sich kein Problem, jedoch akzeptiert das FTP Command "cd" nur Slash's in Pfaden - was an sich ja nicht verkehrt ist.
Den Pfad habe ich bereits in einer Variablen und in dieser sollen nun alle Backslashes ("\") durch Slashes ("/") ersetzt werden. Ich habe es nochmal "bildlich" dargestellt:
1
c:\demos\addons\safquards\data\bin
1
/demos/addons/safquards/data/bin
Gruss,
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103405
Url: https://administrator.de/forum/batch-backslash-durch-slash-ersetzen-abfrage-ob-der-ordner-leer-ist-103405.html
Ausgedruckt am: 14.04.2025 um 23:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo Dani!
) ...
Ich würde das so machen:
Grüße
bastla
Einen Fehler hast du aber drinne: 
Zeile 6 sollte so ausschauen:
Das kommt vom Verschlimmbessern beim Posten - ich wollte die "schöne" Variable %P% als Endergebnis, und habe daher das ursprüngliche P auf P1 geändert (allerdings in Zeile 4 Zeile 6 sollte so ausschauen:
Kann ich mit "If" prüfen, ob in einem Ordner Dateien vorhanden sind oder läuft das auf eine Schleife raus?!
Weder - noch. dir "D:\Ordner" /a-d >nul 2>&1 && echo Dateien enthalten
bastla
Hallo Dani!
DelayedExpansion ...
Alternative:
Grüße
bastla
DelayedExpansion ...
Alternative:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
for /f "delims=" %%i in ('dir /b /ad /s /l "c:\programme"') do call :ProcessDir "%%i"
goto :eof
:ProcessDir
rem Laufwerksbuchstaben samt Doppelpunkt löschen und in neue Variable speichern
set "path_tmp=%~p1"
rem Backslash durch Slash ersetzen, da das FTP - Command "cd" nur mit Slash's geht
set "test=%path_tmp:\=/%"
rem Speichert das FTP - Kommando in die File
echo cd "%test%"
echo cd %1
goto :eof
bastla