rdietrich
Goto Top

Pfad zu Eigene Dateien (und Sub-Ordner) verschieben

Hallo zusammen. Ich möchte unter Win XP via Batch den Pfad zu den Eigenen Dateien (+ Eigene Bilder, Eigene Musik, etc.) verschieben. Zusätzlich sollten die bestehenden Ordner und Dateien ins Ziel verschoben werden. Also eigentlich genau das via Batch realisieren, was man mittels Eigene Dateien -> Eigenschaften -> Verschieben.. im Dialog machen kann.

Mein Versuch:
@echo off & setlocal

set neuerPfad=C:\ed4\

REM Aktuellen Pfad der Eigenen Dateien auslesen

for /f "tokens=2*" %%i in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" ^| find "Personal"') do set "pfad=%%j"  

echo Eigene Dateien: %pfad%
echo.
echo Neuer Pfad: %neuerPfad%

REG add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" /t REG_SZ /d "%neuerPfad%" /f  

echo.

for /f "tokens=2*" %%i in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" ^| find "Personal"') do set "pfad=%%j"  

echo Eigene Dateien: %pfad%

echo.
pause

...war leider nur begrenzt erfolgreich. Das Auslesen funktioniert, das Setzen nur bedingt. Der Value nach Scriptdurchlauf sieht so aus:

<code text=plain>
C:\ed4\ /f


Wenn ich dann in die Eigenschaften der Eigenen Dateien klicke, steht immernoch der Standardpfad zu %profile%\Eigene Dateien im Dialogfenster. Ich gehe daher davon aus, dass ich den falschen Registry-Key angehe - finde aber keinen Alternativen.

Bin für jede Hilfe dankbar.

Gruß,

R.D.

Content-ID: 108705

Url: https://administrator.de/contentid/108705

Ausgedruckt am: 25.11.2024 um 07:11 Uhr

rdietrich
rdietrich 17.02.2009 um 13:16:08 Uhr
Goto Top
hm, keine Reaktion. Äußerst ungewöhnlich in diesem Forum. Hab ich etwas missverständlich formuliert? Kann mir irgendwie nicht vorstellen, dass da niemand eine Lösung weiß.

face-sad
jenkman
jenkman 05.03.2009 um 13:26:34 Uhr
Goto Top
Habe dazu eine Lösung. Dabei werden auch die Zugriffberechtigungen auf die Eigenen Datein verschoben.

Damit die NTFS-Rechte mit verschoben werden, ist es erforderlich, das Programm robocopy.exe aus dem ResourceKit in den Ordner des Scriptes zu kopieren.

Hier nun der Code des Scriptes
 
' Nutzernamen ermitteln  

Set fs = CreateObject("WScript.Network")  
username = fs.UserName

wscript.echo "Eigene Datein des aktuellen Nutzer: " & username & " werden verschoben."  


Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002

' === Registry schreiben  
pfad = "SYSTEM\ControlSet001\Control\Print\Monitors\Standard TCP/IP Port\Ports\" & PORT  

Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\default:StdRegProv")  

oReg.CreateKey HKEY_LOCAL_MACHINE, pfad

' HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths\Azubi: "d:\Azubi\Eigene Dateien" REG_SZ  
pfad = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DocFolderPaths\"   
oReg.SetStringValue HKEY_LOCAL_MACHINE, pfad , username, "d:\" & username & "\Eigene Dateien"  

' HKU\S-1-5-21-606747145-1993962763-1957994488-1006\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Pictures: "d:\Azubi\Eigene Dateien\Eigene Bilder" REG_SZ  
pfad = "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\"  
oReg.SetStringValue HKEY_CURRENT_USER, pfad , "My Pictures", "d:\" & username & "\Eigene Dateien\Eigene Bilder"  

' HKU\S-1-5-21-606747145-1993962763-1957994488-1006\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal: "d:\Azubi\Eigene Dateien" REG_SZ  
pfad = "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\"  
oReg.SetStringValue HKEY_CURRENT_USER, pfad , "Personal", "d:\" & username & "\Eigene Dateien"  

' HKU\S-1-5-21-606747145-1993962763-1957994488-1006\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\My Pictures: "d:\Azubi\Eigene Dateien\Eigene Bilder" Reg_SZ  
pfad = "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\"  
oReg.SetStringValue HKEY_CURRENT_USER, pfad , "My Pictures", "d:\" & username & "\Eigene Dateien\Eigene Bilder"  

' HKU\S-1-5-21-606747145-1993962763-1957994488-1006\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal: "d:\Azubi\Eigene Dateien" Reg_Expand_SZ  
pfad = "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\"  
oReg.SetExpandedStringValue HKEY_CURRENT_USER, pfad , "Personal", "d:\" & username & "\Eigene Dateien"  

Set WshShell = WScript.CreateObject( "WScript.Shell" )  

WshShell.run "robocopy.exe " & Chr(34) & "c:\dokumente und einstellungen\" & username & "\Eigene Dateien"& Chr(34) & " " & Chr(34) & "d:\" & username & "\Eigene Dateien" & Chr(34) & " /E /SEC /MOVE /V /NP /R:10 /W:30 ", , true  

' Aktuellen Nutzer Abmelden  
' http://www.motobit.com/tips/detpg_wmi-windows-system-shutdown/  
'Get connection To local wmi  
 Set Connection = GetObject("winmgmts:root\cimv2")  
  
  'Get Win32_OperatingSystem objects - only one object In the collection  
  WQL = "Select Name From Win32_OperatingSystem"  
  Set SystemClass = Connection.ExecQuery(WQL)
  
  'Get one system object  
  'I think there is no way To get the object using URL?  
  For Each System In SystemClass
    System.Win32ShutDown (0)
  Next