Top-Themen

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 - Backslash durch Slash ersetzen - Abfrage, ob der Ordner leer ist

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

05.12.2008, aktualisiert 19:36 Uhr, 11953 Aufrufe, 6 Kommentare

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:
01.
c:\demos\addons\safquards\data\bin
daraus soll folgendes werden:
01.
/demos/addons/safquards/data/bin
Ich hab mir schon diverse Schnipsel von Biber und bastla angeschaut, jedoch blick ich da nicht so ganz durch.


Gruss,
Dani
Mitglied: bastla
05.12.2008 um 14:49 Uhr
Hallo Dani!

Sollte so gehen:
01.
@echo off & setlocal 
02.
set "P1=c:\demos\addons\safquards\data\bin" 
03.
::Laufwerksanteil entfernen 
04.
for %%i in ("%P%") do set "P2=%%~pni" 
05.
::Ersetzung vornehmen 
06.
set "P=%P2:\=/%" 
07.
echo %P%
Grüße
bastla
Bitte warten ..
Mitglied: Dani
05.12.2008 um 16:16 Uhr
Hi bastla,
ah...wenn ich meinen Code so anschaue, war ich gar nicht so weit weg von dir. Läuft auf jeden Fall 1A.
Einen Fehler hast du aber drinne:

Zeile 6 sollte so ausschauen:
01.
for %%i in ("%P1%") do set "P2=%%~pni"
Nachdem ich nebenher weiter programmiert habe, stellt sich mir noch ein Problem. Kann ich mit "If" prüfen, ob in einem Ordner Dateien vorhanden sind oder läuft das auf eine Schleife raus?!


Gruss,
Dani
Bitte warten ..
Mitglied: bastla
05.12.2008 um 16:29 Uhr
Hallo Dani!

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 ) ...

Kann ich mit "If" prüfen, ob in einem Ordner Dateien vorhanden sind oder läuft das auf eine Schleife raus?!
Weder - noch. Ich würde das so machen:
dir "D:\Ordner" /a-d >nul 2>&1 && echo Dateien enthalten
Grüße
bastla
Bitte warten ..
Mitglied: Dani
05.12.2008 um 17:10 Uhr
Hmm...irgendwo hab ich noch einen logischen Fehler drinne. So sieht mein Quellcode aus:
01.
for /f "delims=" %%i in ('dir /b /ad /s /l "c:\programme"') do ( 
02.
		 
03.
		rem Laufwerksbuchstaben samt Doppelpunkt löschen und in neue Variable speichern 
04.
		set "path_tmp=%%~pi" 
05.
		 
06.
		rem Backslash durch Slash ersetzen, da das FTP - Command "cd" nur mit Slash's geht 
07.
		set "test=%path_tmp:\=/%" 
08.
		 
09.
		rem Speichert das FTP - Kommando in die File 
10.
		echo cd "%test%" 
11.
		echo cd %%i
Dann sieht die Ausgabe so aus:
01.
cd "/programme/addons/datev/data/" 
02.
cd c:\programme\addons 
03.
cd "/programme/addons/datev/data/" 
04.
cd c:\programme\addons\datev 
05.
cd "/programme/addons/datev/data/" 
06.
cd c:\programme\addons\datev\configs 
07.
cd "/programme/addons/datev/data/" 
08.
cd c:\programme\addons\datev\data 
09.
cd "/programme/addons/datev/data/" 
10.
cd c:\programme\addons\datev\plugins 
11.
cd "/programme/addons/datev/data/" 
12.
cd c:\programme\addons\datev\data\lang
Wie man sieht, wiederholt sich alle 2 Zeilen ein Pfad. So sieht es aus, wenn ich "echo cd "%test%" auskommentiere:
01.
cd c:\programme\addons 
02.
cd c:\programme\addons\datev 
03.
cd c:\programme\addons\datev\configs 
04.
cd c:\programme\addons\datev\data 
05.
cd c:\programme\addons\datev\plugins 
06.
cd c:\programme\addons\datev\data\lang
Diese Zeilen entsprechenden der wahren Verzeichnisstruktur. Irgendwo wird eine Variable nicht überschrieben...oder?


Grüße,
Dani
Bitte warten ..
Mitglied: bastla
05.12.2008 um 17:18 Uhr
Hallo Dani!

DelayedExpansion ...

Alternative:
01.
for /f "delims=" %%i in ('dir /b /ad /s /l "c:\programme"') do call :ProcessDir "%%i" 
02.
goto :eof 
03.
		 
04.
:ProcessDir 
05.
rem Laufwerksbuchstaben samt Doppelpunkt löschen und in neue Variable speichern 
06.
set "path_tmp=%~p1" 
07.
		 
08.
rem Backslash durch Slash ersetzen, da das FTP - Command "cd" nur mit Slash's geht 
09.
set "test=%path_tmp:\=/%" 
10.
		 
11.
rem Speichert das FTP - Kommando in die File 
12.
echo cd "%test%" 
13.
echo cd %1 
14.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Dani
05.12.2008 um 19:36 Uhr
G' Abend bastla,
ich habe dich nicht vergessen....nach Stundenlanger Nachdenken und Probieren, geht nun das Script 1A. Einiges ist sicher noch verbesserungswürdig aber das interessiert mich heute mal nicht mehr. Anbei mal den ganzen Schnipsel:
01.
@echo off & setlocal EnableDelayedExpansion 
02.
 
03.
set ftp_servers=F:\FTP-Tool\ftp_servers.txt 
04.
 
05.
 
06.
rem FTP-Daten auslesen 
07.
for /f "tokens=1,2,3 delims=;" %%a in ('type %ftp_servers%') do ( 
08.
 
09.
	rem FTP Daten in die FTP-Auto-File schreiben 
10.
	echo open %%a>> "%temp%\ftp_upload_commands.txt" 
11.
	echo %%b>> "%temp%\ftp_upload_commands.txt" 
12.
	echo %%c>> "%temp%\ftp_upload_commands.txt" 
13.
 
14.
	rem Verzechnisse auslesen 
15.
	for /f "delims=" %%i in ('dir /b /ad /s /l "j:\programme"') do ( 
16.
		 
17.
		rem Laufwerksbuchstaben samt Doppelpunkt löschen und in neue Variable speichern 
18.
		set "linux_path=%%~pni" 
19.
		 
20.
		rem Backslash durch Slash ersetzen, da das FTP - Command "cd" nur mit Slash's geht 
21.
		 set "test=!linux_path:\=/!" 
22.
		 
23.
		rem Speichert das FTP - Kommando in die File 
24.
		 echo cd !test!>> "%temp%\ftp_upload_commands.txt" 
25.
 
26.
		rem Ausgabe von allen Files die sich im jeweiligen Ordner liegenq 
27.
		dir "%%i" /a-d >nul 2>&1 && for /f "delims=" %%k in ('dir /b /a-d /l %%i') do echo mput "%%i\%%k">> "%temp%\ftp_upload_commands.txt" 
28.
29.
	echo close >> "%temp%\ftp_upload_commands.txt" 
30.
31.
rem FTP Verbindung schließen 
32.
echo quit >> "%temp%\ftp_upload_commands.txt" 
33.
 
34.
rem Startet FTP Upload 
35.
ftp -d -i -s:"%temp%\ftp_upload_commands.txt" 
36.
 
37.
rem Löscht die FTP File 
38.
del "%temp%\ftp_upload_commands.txt" 
39.
 
40.
 
41.
pause
An dieser Stelle nochmal vielen Dank für deine Einbringungen...


Grüße,
Dani
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Ersetzen von leeren Parametern mittels CMD

gelöst Frage von InvisanBatch & Shell2 Kommentare

Hi zusammen, ich habe derzeit ein Problem beim ersetzen von leeren Parametern in einem Bat File die ich mittels ...

Datenbanken

SQL-Abfrage und leere Felder vermeiden

gelöst Frage von zwangseinweisungDatenbanken12 Kommentare

Hallo, ich mache grade eine Ausbildung zum Fi-Si und vor dem Weihnachtsurlaub haben wir im Fach Datenbanken noch eine ...

Batch & Shell

Verknüpfungen von leeren Ordnern löschen

Frage von AmiKegoBatch & Shell2 Kommentare

Hallo, ich schreibe gerade ein Skript mit Batch das leere Ordner mit Unterordner löscht. Jetzt will ich es ein ...

Batch & Shell

Linie mit Leer überschreiben (Batch)

gelöst Frage von clragonBatch & Shell3 Kommentare

Hey ihr Batch-ler da draußen! Ich entwickle grad meinen Eigenen Batch Safe auf Professionellem Level, also ECHTE Verschlüsselungen ( ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 2 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement17 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware12 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...