Avatar billede rebakr Nybegynder
07. maj 2010 - 12:36 Der er 7 kommentarer og
1 løsning

Problemer med kald af parameter

Hej!

Jeg har et problem med et VBScript jeg skal bruge i forbindelse med backup af Pc'er via SyncToy fra Microsoft.

Jeg bruger ObjShell.SpecialFolders til at find stien til den bruger der er logget på's Dokumnent/My Documents mappe, senere skal jeg bruge parameteren fra SpecialFolders i forbindelse med at starte SyncToy programmet. Men jeg får en fejl akkurat det sted i scriptet hvor jeg forsøger at bruger SpecialFolders i kørslen af SyncToy. Det er ved den parameter der hedder Left at jeg skal bruge SpecialFolders og at det går galt.

Mvh René

Her er scriptet.
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set ObjNet = CreateObject("WScript.Network")
Set ObjShell = CreateObject("WScript.Shell")   

Dim strPCname, strUsername, specialFolders
Dim strDriveLetter, strRemotePath, strUser, strPassword, strProfile
Dim ObjShell

strDriveLetter = "U:"
strRemotePath = "\\XXXsrv25\Backup-Laptop"
strUser = "Backup"
strPassword = "2010"
strProfile = "false"


'Sætter PC navn til StrPCname og UserName til StrUsername. StrPCname og StrUsername bliver kaldt længere nede i scriptet
StrPCname = ObjNet.ComputerName
strUsername = ObjNet.UserName

'Sætter specialFolders = stien til My Documents
specialFolders = ObjShell.SpecialFolders("MyDocuments")


'I tilfælde af at drev U er tilkoblet, frakobles dette inden scriptet kører videre - er lavet i det tilfælde
'at man ønsker at bruge scriptet flere gang under samme session på PC'en
If (ObjFSO.DriveExists("U:") = True) Then
    ObjNet.RemoveNetworkDrive "U:",True, True
End If

'Giver tid til at frakoble drev U
WScript.Sleep 1000

'Tilkobler drev U
ObjNet.MapNetworkDrive strDriveLetter, strRemotePath, strProfile, strUser, strPassword


'Viser PC navn og Brugernavn i 2 stk. popup vinduer
'Wscript.Echo strPCname
'Wscript.Echo strUsername

'Viser stien til My Documents
'Wscript.echo specialFolders


'Kode til at kunne starte et program længere nede i scriptet, med kommandoen  --->  shell "C:\Windows\System32\notepad.exe" 
sub shell(cmd)
dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run(cmd)
Set objShell = Nothing
end Sub


'If/Else og If/ElseIf statments til at checke om der er oprettet de korrekte mapper på backup serveren
If not ObjFSO.FolderExists("\\XXXsrv25\Backup-Laptop" & "\" & StrUsername) then
    'Wscript.Echo "Backup-Laptop\brugernavn\PC-navn er ikke oprettet på XXXsrv25"
    'Wscript.Echo "Backup-Laptop\brugernavn\PC-navn oprettes på XXXsrv25"
    ObjFSO.CreateFolder "\\XXXsrv25\Backup-Laptop" & "\" & StrUsername
    ObjFSO.CreateFolder "\\XXXsrv25\Backup-Laptop" & "\" & StrUsername & "\" & StrPCname
    'Wscript.Echo "Backup-Laptop\brugernavn\PC-navn er oprettet på XXXsrv25"
   
    ElseIf ObjFSO.FolderExists("\\XXXsrv25\Backup-Laptop" & "\" & StrUsername) then
    'Wscript.Echo "Backup-Laptop\brugernavn er oprettet på XXXsrv25"
   
    If Not ObjFSO.FolderExists("\\XXXsrv25\Backup-Laptop" & "\" & StrUsername & "\" & StrPCname) then
    'Wscript.Echo "Backup-Laptop\brugernavn er oprettet, men PC-navn er ikke oprettet på XXXsrv25"
    'Wscript.Echo "Backup-Laptop\brugernavn er oprettet, og PC-navn oprettes på XXXsrv25"
    ObjFSO.CreateFolder "\\XXXsrv25\Backup-Laptop" & "\" & StrUsername & "\" & StrPCname
    'Wscript.Echo "Backup-Laptop\brugernavn\PC-navn er oprettet på XXXsrv25"
   
    ElseIf ObjFSO.FolderExists("\\XXXsrv25\Backup-Laptop" & "\" & StrUsername & "\" & StrPCname) then
    'Wscript.Echo "Backup-Laptop\brugernavn\PC-navn er oprettet, start backup"
   
End If
End If


'Skjuler drev U for brugeren
ObjShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives", 1048576, "REG_DWORD"
ObjShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives", 1048576, "REG_DWORD"

'****Dette virker hvis jeg kalder Left ved at skrive en sti fast****
'SyncToy programet opretter "folder pair" og backuppen køres
'shell "C:\SyncToy\SyncToy.exe  -d(left=C:\XXX,right=U:\" & StrUsername & "\" & StrPCname & "\,name=XXX,operation=Echo)"
'shell """C:\SyncToy\SyncToyCmd.exe"" -Rxxx"

'****Det er i dette at problemet er, jeg vil gerne****
'****kalde Left=specialFolders, men får en fejl****

shell "C:\SyncToy\SyncToy.exe  -d(left= " & .specialFolders",right=U:\" & StrUsername & "\" & StrPCname & "\,name=XXX,operation=Echo)"
shell """C:\SyncToy\SyncToyCmd.exe"" -Rxxx"
Avatar billede kabbak Professor
07. maj 2010 - 12:51 #1
Mangler du ikke "ObjShell." i nedenstående

shell "C:\SyncToy\SyncToy.exe  -d(left= " & .specialFolders",right=U:\" & StrUsername & "\" & StrPCname & "\,name=XXX,operation=Echo)"
shell """C:\SyncToy\SyncToyCmd.exe"" -Rxxx"

Den er sat ind her:

shell "C:\SyncToy\SyncToy.exe  -d(left= " & ObjShell.specialFolders",right=U:\" & StrUsername & "\" & StrPCname & "\,name=XXX,operation=Echo)"
shell """C:\SyncToy\SyncToyCmd.exe"" -Rxxx"
Avatar billede kabbak Professor
07. maj 2010 - 12:53 #2
Nej, det var vist punktum, der var for meget

specialFolders

shell "C:\SyncToy\SyncToy.exe  -d(left= " & specialFolders & ",right=U:\" & StrUsername & "\" & StrPCname & "\,name=XXX,operation=Echo)"
shell """C:\SyncToy\SyncToyCmd.exe"" -Rxxx"
Avatar billede rebakr Nybegynder
10. maj 2010 - 12:56 #3
Hej Kabbak!

Din løsning betyder at jeg nu ikke får en fejl når jeg kører scriptet, det er jo dejligt, men der sker desværre intet i forbindelse med kopieringen som skal starte SyncToy op og så sætte stierne til de to værdier der er for Left og Right.
Jeg kan se at SyncToy hurtig starter, men stierne bliver ikke sat og programmet lukker igen.
Avatar billede kabbak Professor
10. maj 2010 - 18:17 #4
Prøv
Shell "C:\SyncToy\SyncToy.exe  -d(left= """ & specialFolders & """,right=U:\" & strUsername & "\" & strPCname & "\,name=XXX,operation=Echo)"

eller

Shell "C:\SyncToy\SyncToy.exe  -d(left= '" & specialFolders & "',right=U:\" & strUsername & "\" & strPCname & "\,name=XXX,operation=Echo)"
Avatar billede rebakr Nybegynder
11. maj 2010 - 10:36 #5
Takker denne her hjalp.

Shell "C:\SyncToy\SyncToy.exe  -d(left= """ & specialFolders & """,right=U:\" & strUsername & "\" & strPCname & "\,name=XXX,operation=Echo)"
Avatar billede kabbak Professor
11. maj 2010 - 16:54 #6
hvorfor tog du så selv point ;-((
Avatar billede rebakr Nybegynder
12. maj 2010 - 08:43 #7
Det var ikke meningen, jeg er ikke vant til at bruge dette her og de 3 gange jeg har brugt det har jeg altid klokket i det med point tildelingen, så hvordan får jeg givet dem til dig?
Avatar billede kabbak Professor
12. maj 2010 - 18:24 #8
opret et nyt spørgsmål her i samme kategori, og kald spørgsmålet point til kabbak og henvis så med link det dette spørgsmål.

Husk kun at give kommentarer, som spørger, det er dem som svarer, der skal bruge svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester