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

Batch Skript Robocopy unter Windows 7 - Problem mit Pfad und Variable

Frage Entwicklung Batch & Shell

Mitglied: Viprex

Viprex (Level 1) - Jetzt verbinden

06.11.2009 um 18:45 Uhr, 13657 Aufrufe, 5 Kommentare, 1 Danke

Hallo,

mit folgendem Skript habe ich mir unter Windows XP eine Möglichkeit gebastelt, bequem Dateien mit Robocopy zu kopieren. Dem Skript wurden dabei einfach nur Quell und Zielpfad mitgeteilt. Hier der Codeschnipsel:

01.
@echo off 
02.
@cls 
03.
 
04.
@echo ############################################################################### 
05.
@echo #################### Batch Datei zum Kopieren mit Robocopy #################### 
06.
@echo ############################################################################### 
07.
 
08.
:Start 
09.
@echo ------------------------------------------------------------------------------- 
10.
@set source= 
11.
@set /p source=Bitte Quellpfad eingeben:  
12.
@echo. 
13.
 
14.
@set target= 
15.
@set /p target=Bitte Zielpfad eingeben:  
16.
@echo ------------------------------------------------------------------------------- 
17.
@echo Folgende Pfade wurden bernommen: 
18.
@echo.  
19.
@echo Quelle: "%source%" 
20.
@echo. 
21.
@echo Ziel: "%target%" 
22.
@echo. 
23.
 
24.
:korrekt 
25.
@set /p korrekt=Ist dies korrekt (y/n):  
26.
@if not ´%korrekt%´==´´ set choice=%choice:~0,1% 
27.
@if ´%korrekt%´==´y´ goto copy 
28.
@if ´%korrekt%´==´n´ goto start 
29.
@ECHO "%korrekt%" ist keine gueltige Eingabe! 
30.
@echo. 
31.
@goto korrekt 
32.
 
33.
:copy 
34.
@echo. 
35.
@robocopy "%source%" "%target%" /MIR /R:1 /W:1 /NFL /ETA  
36.
goto end 
37.
 
38.
:end 
39.
@echo. 
40.
@echo ############################################################################### 
41.
@echo ############################## Batch Skript Ende ############################## 
42.
@echo ############################################################################### 
43.
pause
Leider funktioniert das Skript unter Windows 7 Professional x64 nicht wie gewünscht.

Das Skript liegt an folgendem Speicherort: "W:\Backups\Skripte\robocopy_eingabe.bat"
Rufe ich das Skript mit einem Doppelklick an diesem Ort auf, erhalte ich ein merkwürdiges Ergebnis. Wenn ich als Quelllaufwerk "w:" und als Ziellaufwerk "r:" wähle, kopiert Robocopy den Ort "w:\Backup\Skripte" und nicht den eingegeben Quellpfad "w:"!

f274875d5d42905488328be45fef3768-zwischenablage02 - Klicke auf das Bild, um es zu vergrößern

Rufe ich das Skript am selben Ort "(W:\Backup\Skripte\robocopy_eingabe.bat") auf und wähle als Quelle "f:" und als Ziel "q:", funktioniert das Skript wie gewünscht.

0f907c2e9d3a62076e1e3693877923f8-zwischenablage03 - Klicke auf das Bild, um es zu vergrößern

Kann sich jemand erklären, warum das so ist? Klar kann ich in diesem einem Fall auch die robocopy Zeile in der Kommandozeile eingeben, mich interessiert aber, warum das Skript hier querschießt.

BTW: Ich weiß nichtmal wirklich, ob es an Windows 7 liegt, da ich das Skript jetzt nicht unter XP testen kann. Falls es kein Windows 7 Problem ist (wovon ich jetzt mal ausgehe), würde ich gerne wissen, warum die Kommandozeile da so einen Schlenker macht.

Vielen Dank für eure Hilfe!
Mitglied: bastla
06.11.2009 um 20:51 Uhr
Hallo Viprex!

"W:" ist keine Pfad-, sondern nur eine Laufwerksangabe - wenn Du "W:\" meinst, musst Du es auch so eingeben.

Dass nicht automatisch der Root-Ordner des Laufwerkes verwendet wird, liegt daran, dass für jedes Laufwerk ein (eigener) "aktueller" Pfad verwaltet wird - das lässt sich leicht nachvollziehen, wenn Du an der Kommandozeile (von C:\ aus) eingibst:
01.
C:\>cd W:\Backups 
02.
C:\>dir W:
Mit dem ersten Befehl änderst Du auf Laufwerk W: den (dort) aktuellen Pfad, wechselst aber nicht zu diesem Laufwerk (dazu müsstest Du "cd /d" oder "pushd" verwenden).
Beim "dir"-Befehl ist dann auf dem Laufwerk W: bereits der "Backup"-Ordner aktuell und es wird (da Du keine explizite Pfadangabe, sondern eben nur eine Laufwerksangabe, verwendet hast) dessen Inhalt angezeigt.

Wurde vorher noch keine Änderung des aktuellen Pfades vorgenommen (wie es in Deinem Beispiel bei "f:" und "q:" der Fall gewesen sein muss), wird tatsächlich jeweils der Root-Ordner (also zB "f:\") verwendet.

Grüße
bastla
Bitte warten ..
Mitglied: GabbaGandalf
25.07.2013 um 09:19 Uhr
Hallo,

ich bin auf der Suche nach einem guten Robocopy-Batch-Script. Das vom Threadersteller erstellte Script sieht schon ziemlich gut aus, allerdings laufe ich in den selben Fehler.

Frage: Wäre folgendes möglich?

Statt
@robocopy "%source%" "%target%" /MIR /R:1 /W:1 /DCOPY:T

das hier:
@robocopy "%source%":\ "%target%":\ /MIR /R:1 /W:1 /DCOPY:T

Dann müsste man ja ja sozusagen nur den reinen Laufwerksbuchstaben d oder e oben eingeben.

Kanns gerade nicht testen, würde aber doch funktionieren, oder?

Nutzt ihr weitere Parameter beim Robocopy-Script? Ich möchte halt den Inhalt von meiner Datenfestplatte 1zu1 kopieren. Inkl. Timestamps etc.
Bitte warten ..
Mitglied: Viprex
25.07.2013 um 10:55 Uhr
Hallo,

ich setze das obige Skript noch immer ein und habe es eben nochmal schnell modifiziert, indem ich vorm robocopy Befehl direkt auf das Laufwerk wechsel.

01.
@echo off 
02.
@cls 
03.
 
04.
@echo ############################################################################### 
05.
@echo #################### Batch Datei zum Kopieren mit Robocopy #################### 
06.
@echo ############################################################################### 
07.
 
08.
:Start 
09.
@echo ------------------------------------------------------------------------------- 
10.
@set source= 
11.
@set /p source=Bitte Quellpfad eingeben:  
12.
@echo. 
13.
@set target= 
14.
@set /p target=Bitte Zielpfad eingeben:  
15.
@echo ------------------------------------------------------------------------------- 
16.
@echo Folgende Pfade wurden bernommen: 
17.
@echo.  
18.
@echo Quelle: "%source%" 
19.
@echo. 
20.
@echo Ziel: "%target%" 
21.
@echo. 
22.
@goto korrekt 
23.
 
24.
:korrekt 
25.
@set /p korrekt=Ist dies korrekt (y/n):  
26.
@if not ´%korrekt%´==´´ set choice=%choice:~0,1% 
27.
@if ´%korrekt%´==´y´ goto copy 
28.
@if ´%korrekt%´==´n´ goto start 
29.
@echo "%korrekt%" ist keine gueltige Eingabe! 
30.
@echo. 
31.
@goto korrekt 
32.
 
33.
:copy 
34.
@echo. 
35.
@set drive=%source:~0,2% 
36.
@%drive% 
37.
@robocopy "%source%" "%target%" /MIR /R:1 /W:1 /NFL /ETA  
38.
@goto end 
39.
 
40.
:end 
41.
@echo. 
42.
@echo ############################################################################### 
43.
@echo ############################## Batch Skript Ende ############################## 
44.
@echo ############################################################################### 
45.
@pause
Durch die Anweisung @%drive% habe ich versucht, erst auf das entsprechende Laufwerk zu wechseln und robocopy damit korrekt anzuweisen. Weiß gerade nicht, ob es auch mit Laufwerken klappt (habe auch keine freien Laufwerke zum Testen zur Verfügung).
Vielleicht kannst du es ja testen indem du einfach z. B. E: als Quelle und D: als Ziel einträgst. Bin gespannt obs funktioniert und würde mich über eine kurze Rückmeldung freuen
Bitte warten ..
Mitglied: bastla
25.07.2013 um 19:37 Uhr
Hallo Viprex!
Durch die Anweisung @%drive% habe ich versucht, erst auf das entsprechende Laufwerk zu wechseln
Was hat dich denn an den beiden Varianten
cd /d
bzw
01.
pushd 
02.
popd
gestört? Abgesehen davon ist das Wechseln auf das entsprechende Quell-Laufwerk nicht nötig, wenn der Quellpfad korrekt ist, was Du ja einfach mit einem
if exist "%source%"
vorweg prüfen kannst ...

Grüße
bastla

BTW: Das "@echo off" am Anfang des Batches macht die "@" an den jeweiligen Zeilenanfängen entbehrlich (bzw kontraproduktiv, wenn Du während der Testphase per "@echo on" die einzelnen Anweisungen vor der Ausführung auch anzeigen lassen willst) ...
Bitte warten ..
Mitglied: Viprex
27.07.2013 um 12:53 Uhr
Moin Bastla,

gestört hat mich gar nichts, ich habe nur in der Eile auf das zurückgegriffen, was ich kannte. Ich werde bei Gelegenheit mal deine Befehle probieren. Insbesondere kann die kurze Quellpfad Prüfung ja nochmal eingebaut werden.
Evtl. habe ich auch noch nicht ganz raus, welcher Befehl in welchem Kontext der richtige ist und welchen Pfad ändert. ich schaue mir das evtl. nochmal an.

Bzgl. der echo off Thematik. stimmt schon, ist mir auch bewusst. Ich hatte mir das nur irgendwann mal angewöhnt immer ein @ am Anfang der Zeile zu setzen. Mache mir da wohl zu viel Arbeit. Ist ja aber auch nicht so wild.
Jedenfalls vielen Dank für die Tipps!
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Windows 7: Problem mit CP in Batch (3)

Frage von Maik87 zum Thema Batch & Shell ...

Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Windows 10
gelöst Windows 10: Problem mit Bitlocker (10)

Frage von honeybee zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...