Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Windows-Variabel umschreiben - Backslash durch Slash ersetzen, Doppelpunkt entfernen

Frage Microsoft Windows Tools

Mitglied: panguu

panguu (Level 2) - Jetzt verbinden

12.10.2012, aktualisiert 12:23 Uhr, 3861 Aufrufe, 8 Kommentare

Hallo Leute,

ich möchte rsync für Windows einsetzen, das läuft unter cygwin. Viele kennen das ja sicherlich. Die Pfade gibt man dort ein im Format cygwin/C/Beispielordner/Subordner

Nun stehe ich aber vor folgendem Problem, denn ich mache folgendes:

1.) ich setze mein Zielverzeichnis auf einen Desktop-Ordner mit dem Befehl "SET DESTDIR=%USERPROFILE%\Desktop\Testing"

2.) wenn ich testweise als Zielverezeichnis C:\Testing wählen wollen würde, dann lautet der rsync-Befehl wie folgt:
"rsync.exe -rtv --delete /cygdrive/D/Quellverzeichnis /cygdrive/C/Testing"
Das synct dann quasi von D:\Quellverzeichnis --nach--> C:\Testing

Funktioniert ja auch. Aber nun möchte ich nich C:\Testing nutzen als Ziel, sondern %DESTDIR%, also C:\blabla\MaxMustermann\Desktop\Testing

Wenn ich einfach
c:\temp\rsync\rsync.exe -rtv --delete /cygdrive/A/ /cygdrive/%DESTDIR%

verwenden würde, schlägt das natürlich fehl, denn die Pfade sind von Cygwin inakzeptabel. Ich such also nun nach einer Möglichkeit, wie ich das lösen könnte. Brauch ich hierzu wirklich ein extra Tool, um meine vorher erstellte %DESTDIR% Variable zu zerstückeln, umzuschreiben und in eine neue Variable zu setzen? Ich hab mir überlegt, dass ich eben mit einem Extra "Suchen-und-Ersetzen" Tool á-la SED (Linux) arbeiten könnte und dann erstmal %DESTDIR% auslese, die Doppelpunkte entferne, und sämtliche Backslashes durch normale Slashes zu ersetzen. Würde das funktionieren?

Wie macht man das aber unter einer Windows-DOS-Shell? Vielleicht kann man das ja geschickt mit "for /f "tokens=xyz delims=\ usw..." lösen?? Hoffe jemand kann mir hierzu mit Tips und Ratschlägen behilflich sein.

Danke im Voraus.
Mitglied: TsukiSan
12.10.2012 um 12:56 Uhr
Hallo panguu,

du könntest dich durch diesen Thread lesen.

Viele Grüße

Tsuki
Bitte warten ..
Mitglied: Lochkartenstanzer
12.10.2012, aktualisiert um 13:06 Uhr
moin

 
newdestdir=`echo %DESTDIR% | sed -e "s:c:\\:/cygdrive/c:g" | sed -e "s:\\:/:g"` 
 
rsync bla $newdestdir 
lks

Nachtrag. eventuell muß am quoting noch etwas gefeilt werden. Habe gerade kein cygwin zur Hand.
Bitte warten ..
Mitglied: panguu
12.10.2012, aktualisiert um 13:04 Uhr
Habe ich parallel geöffnet, aber ich versteh nicht alles, deswegen bitte ich um Hilfe und Erklärung. Ich hab mir grad folgenden Befehl erstellt:

for /F "tokens=1-5 delims=\" %i in ("%DESTDIR%") do set test="C/%j/%k/%l/%m"

das ist aber keine saubere Lösung, auch wenn es funktioniert anschließend mit:

rsync.exe -rtv --delete /cygdrive/%meinequelle% /cygdrive/%test%

denn ich habe fix tokens=1-5 genutzt, und außerdem konnte ich nicht ein sauberes C in die erste Viariabel schreiben, denn dort wird ein C: geschrieben (also mit Doppelpunkt). Außerdem habe ich manuell die ganzen Slashes reingeschrieben.

Wie könnte man das denn eleganter lösen? Wie durch welchen Befehl kann ich den Backslash einfach durch Slash ersetzen, und den Doppelpunkt rausnehmen? Bin ich mit dem "for /F ..." Kommando total auf der falschen Fährte und muss man das anders lösen, evtl. mit "FIND" ? ich steh echt auf dem Schlauch. Bitte um eine Hilfestellung.

an LKS: Schön, aber sed gibts nicht auf Windows und ich würde tunlichst vermeiden, noch ein weiteres 3rd party Tool verwenden zu müssen. Deswegen war ja die Frage, ob ich das nicht mit "FOR" und "FIND" also Befehle aus dem Interpreter nutzen könnte.
Bitte warten ..
Mitglied: Lochkartenstanzer
12.10.2012 um 13:05 Uhr
Zitat von panguu:
Wie könnte man das denn eleganter lösen?

sed ist Dein Freund. (s.o.)

lks
Bitte warten ..
Mitglied: panguu
12.10.2012, aktualisiert um 13:09 Uhr
aah, ich glaub ich habs jetzt ... natürlich ohne sed (hatte meinen Beitrag angepasst Lochkartenstanzer, ich möchte kein sed verwenden müssen, aus den oben genannten Gründen)
Bitte warten ..
Mitglied: panguu
12.10.2012, aktualisiert um 13:32 Uhr
Perfekt! Funktioniert astrein, und zwar wie folgt:


  1. ich setze die Variable DESTDIR mit folgendem Inhalt:
SET DESTDIR=%USERPROFILE%\Desktop\Testing

  1. das ergibt bei Win7 und WinXP unterschiedliche Ausgaben:
echo %DESTDIR%
Ergebnis auf einer XP-Kiste --> C:\Dokumente und Einstellungen\Max.Mustermann\Desktop\Testing

  1. jetzt kann ich Text suchen und ersetzen direkt mit dem SET-Befehl durchführen, GENIAL! man braucht kein FOR und TOKENS
  2. mit folgendem Befehl ersetze ich erstmal alle Backslashes durch Slash, und speichere es in die Variable DESTMOD1
SET DESTMOD1=%DEST:\=/%

echo %DESTMOD1% ergibt jetzt als Resultat --> C:/Dokumente und Einstellungen/Max.Mustermann/Desktop/Testing

  1. und im letzten Schritt nehme ich noch den Doppelpunkt ganz raus mit folgendem Befehl
  2. und erst hier im finalen Stadium muss ich das ganze noch in Anführungszeichen setzen, da der Pfad Leerzeichen enthält!
SET DESTFINAL="%DESTMOD1::=%"

und voila das Ergebnis mit "echo %DESTFINAL%":

==> C/Dokumente und Einstellungen/Max.Mustermann/Desktop/Testing



Als Hilfe kann ich diese Seite empfehlen, die alle Befehle sehr ausführlich mit Beispielen beschreibt und verständlich ausdrückt.
http://www.batchlog.pytalhost.com/Batch.html

Grüße,
Pangu.
Bitte warten ..
Mitglied: TsukiSan
12.10.2012 um 13:35 Uhr
Hallo Panguu,

super! Ich wusste, der Thread direkt hier unten drunter wird dir helfen

Viele Grüße

Tsuki
Bitte warten ..
Mitglied: panguu
12.10.2012 um 13:37 Uhr
Jup! er war Auslöser, hatte aber den Befehlssyntax nicht verstanden. Weswegen mir die von mir verlinkte Seite zu den Batchbefehlen mit der ausführlichen Erklärung das Ergebnis brachte

Danke und Grüße,
Pangu.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows 7
Windows 7: Per VBScript Netzwerkdrucker ersetzen (1)

Frage von donnyS73lb zum Thema Windows 7 ...

Windows Server
gelöst Windows 2012 R2 - Remotedesktop-Dienste defekte Sammlung entfernen (12)

Frage von Synchro zum Thema Windows Server ...

Batch & Shell
Suchen, Ersetzen und Entfernen von Dateiinhalten auf Textbasis (1)

Frage von DanteManor zum Thema Batch & Shell ...

Windows Netzwerk
Windows Server 2003 SBS Netzwerk durch neuen Server Ersetzen (9)

Frage von MultiStorm zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...