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, 4017 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 ..
Ähnliche Inhalte
Batch & Shell
Powershell csv importiert keine backslashes (2)

Frage von Druide83 zum Thema Batch & Shell ...

Webentwicklung
gelöst Jeden Link umschreiben ASP.NET (7)

Frage von Herbrich19 zum Thema Webentwicklung ...

Windows 7
gelöst Windows Explorer, wie untere Infoleiste entfernen? (2)

Frage von Server4Alle zum Thema Windows 7 ...

Windows Systemdateien
gelöst Windows 10 Registry Einträge entfernen (18)

Frage von Hendrik2586 zum Thema Windows Systemdateien ...

Neue Wissensbeiträge
Entwicklung

Exploit Development

Anleitung von burhanudinn123 zum Thema Entwicklung ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(1)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Netzwerkprotokolle
Leiten "dumme" Switches VLAN-Tags mit durch? (13)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...