Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Word template kopieren naar profiel path dmv vbs script.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil doormiddel van een script een word template van een netwerk locatie kopieren naar een profiel path van de gebruiker die inlogt.

Hieronder heb ik het script wat ik tot nu toe heb. Vul ik op de plaats van %username% de gewone username in dan wordt het bestand gewoon gekopieerd.

Const strSOURCE = "\\Server\Path\Letter.dot"
Const strTARGET = "C:\Documents and Settings\%usersname%\Application Data\Microsoft\Sjablonen"


Set fso = CreateObject("Scripting.FileSystemObject")

If fso.folderexists(strTARGET) then

FSO.CopyFile strsource, strTARGET

end if

Wat ik nu eigenlijk wil bereiken is dat er in het script naar de login naam wordt gekeken en die op de plaats van %username% zet

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 25-10 14:28
VBScript:
1
2
3
4
5
6
Const APPLICATION_DATA = &H1a&

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(APPLICATION_DATA)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path

Of eventueel met WScript.Network de userName ophalen.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
kan je niet gewoon als path %AppData%\Microsoft\Sjablonen gebruiken?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
rwb schreef op donderdag 22 mei 2008 @ 12:14:
kan je niet gewoon als path %AppData%\Microsoft\Sjablonen gebruiken?
Dit werkt bij mij niet omdat hij %AppData% niet herkent.

Verwijderd

Topicstarter
Ok dit haalt dus het goed path op.

kan ik nu achter Const strTARGET = gewoon objFolderItem.Path zetten zodat hij naar de desbetreffende folder kopieert

[ Voor 79% gewijzigd door Verwijderd op 22-05-2008 13:25 ]


Verwijderd

Topicstarter
ik ben alweer wat verder! Ik kan het volledig Profile Path uitlezen. Ik weet alleen niet wat er nu achter Const strTarget= moet komen.

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Set objWshShell = WScript.CreateObject("WScript.Shell") 
UserName = objWshShell.Environment("PROCESS")("UserName")

Profile = "c:\Documents and Settings\"

Set fs = CreateObject("Scripting.FileSystemObject")


Const strSOURCE = "\\Server\Share\Universeel Sjabloon\Letter.dot"
Const strTARGET = 


Set fso = CreateObject("Scripting.FileSystemObject")

If fso.folderexists(strTARGET) then

FSO.CopyFile strsource, strTARGET
     
end if 

Verwijderd

Topicstarter
Ik heb geprobeerd. (Profile & UserName & "\Application Data\Microsoft\Sjablonen") Erachter te zetten maar dit werkt niet. als ik wscript.echo (Profile & UserName & "\Application Data\Microsoft\Sjablonen") erin zet krijg ik het volledige path goed te zien.

[ Voor 43% gewijzigd door Verwijderd op 22-05-2008 15:57 ]


  • richardboer
  • Registratie: December 2005
  • Laatst online: 07:52
Dit script doet een beetje denken aan een backup script dat ik voor op m'n werk gemaakt heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
echo off
CLS
echo HOSTNAME Controle:
HOSTNAME > %TEMP%\hostnaam

find "SD01" < %TEMP\hostnaam > nul
if not errorlevel 1 goto :HOST_SUCCES

:HOST_FAILED
del %TEMP%\hostnaam
CLS
echo Dit werkt dus zo niet ;(
pause

:HOST_SUCCES
del %TEMP%\hostnaam
CLS
echo YaY het werkt.
del \\server\backuptest\*.* /Q /S
rmdir \\server\backuptest\ /Q /S
xcopy c:\test\*.* \\server\backuptest\ /E

pause


Misschien dat je %TEMP% door %USERNAME% kan vervangen en klaar denk ik.
(Is trouwens een batch script (.bat bestand dus :P)!!! Dus geen VBS. )

[ Voor 5% gewijzigd door richardboer op 22-05-2008 15:57 ]

Richard


Verwijderd

Topicstarter
richardboer schreef op donderdag 22 mei 2008 @ 15:56:
Dit script doet een beetje denken aan een backup script dat ik voor op m'n werk gemaakt heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
echo off
CLS
echo HOSTNAME Controle:
HOSTNAME > %TEMP%\hostnaam

find "SD01" < %TEMP\hostnaam > nul
if not errorlevel 1 goto :HOST_SUCCES

:HOST_FAILED
del %TEMP%\hostnaam
CLS
echo Dit werkt dus zo niet ;(
pause

:HOST_SUCCES
del %TEMP%\hostnaam
CLS
echo YaY het werkt.
del \\server\backuptest\*.* /Q /S
rmdir \\server\backuptest\ /Q /S
xcopy c:\test\*.* \\server\backuptest\ /E

pause


Misschien dat je %TEMP% door %USERNAME% kan vervangen en klaar denk ik.
(Is trouwens een batch script (.bat bestand dus :P)!!! Dus geen VBS. )
Bedankt Voor je Reactie. Maar ik wil het graag in VBS doen. Ik weet dat ik dicht bij ben nu.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je wilt waarschijnlijk gewoon gebruik maken van de functie SHGetFolderPath. Ik weet niet of er in VBScript een wrapper voor is of niet. Mischien dat er in het FileSystemObject een vergelijkbare functie is

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
rwb schreef op donderdag 22 mei 2008 @ 16:02:
Je wilt waarschijnlijk gewoon gebruik maken van de functie SHGetFolderPath. Ik weet niet of er in VBScript een wrapper voor is of niet. Mischien dat er in het FileSystemObject een vergelijkbare functie is
Wil je hiermee zeggen dat op de manier hoe ik het script in elkaar aan het zetten ben mogelijk niet kan???

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Nee ik wil er mee zeggen dat de functie SHGetFolderPath de juiste API call is om te gebruiken. Mischien dat er in jouw omgeving een Wrapper functie voor is om het leven wat gemakkelijker te maken, maar dat weet ik niet.

Anders kan je waarschijnlijk nog steeds gewoon de SHGetFolderPath aanroepen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 18-11 16:08
Je wilt bij een Constante een variable opgeven, dat gaat niet.
Ik zou de username opzoeken via wshnetwork
VBScript:
1
2
3
4
5
6
7
8
9
Set fso = CreateObject("Scripting.FileSystemObject") 
Set WshNetwork = WScript.CreateObject("WScript.Network")

strSOURCE = "\\Server\Share\Universeel Sjabloon\Letter.dot" 
strTARGET = "c:\Documents and Settings\" & WshNetwork.UserName & "\Application Data\Microsoft\Sjablonen"

If fso.folderexists(strTARGET) then 
    FSO.CopyFile strsource, strTARGET 
end if

[ Voor 4% gewijzigd door mhoogendam op 22-05-2008 16:45 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
mhoogendam schreef op donderdag 22 mei 2008 @ 16:44:
Je wilt bij een Constante een variable opgeven, dat gaat niet.
Ik zou de username opzoeken via wshnetwork
VBScript:
1
2
3
4
5
6
7
8
9
Set fso = CreateObject("Scripting.FileSystemObject") 
Set WshNetwork = WScript.CreateObject("WScript.Network")

strSOURCE = "\\Server\Share\Universeel Sjabloon\Letter.dot" 
strTARGET = "c:\Documents and Settings\" & WshNetwork.UserName & "\Application Data\Microsoft\Sjablonen"

If fso.folderexists(strTARGET) then 
    FSO.CopyFile strsource, strTARGET 
end if
Ik zou gewoon even de juiste folder opzoeken http://www.devguru.com/Te...shell_SpecialFolders.html

Als het goed is zal daar ook een AppData folder tussen zitten. Aangezien de application data niet perse in de documents and settings directory staan. In vista staat het bijvoorbeeld op een andere locatie.

[ Voor 12% gewijzigd door Woy op 22-05-2008 16:50 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 18-11 16:08
rwb schreef op donderdag 22 mei 2008 @ 16:46:
[...]

Ik zou gewoon even de juiste folder opzoeken http://www.devguru.com/Te...shell_SpecialFolders.html

Als het goed is zal daar ook een AppData folder tussen zitten. Aangezien de application data niet perse in de documents and settings directory staan. In vista staat het bijvoorbeeld op een andere locatie.
Is inderdaad ook een idee:
VBScript:
1
2
3
4
5
6
7
8
9
10
11
Set fso = CreateObject("Scripting.FileSystemObject") 
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&h1a&)
Set objFolderItem = objFolder.Self 

strSOURCE = "\\Server\Share\Universeel Sjabloon\Letter.dot" 
strTARGET = objFolderItem.Path & "\Microsoft\Sjablonen"

If fso.folderexists(strTARGET) then 
    FSO.CopyFile strsource, strTARGET 
end if

Voor referentie om de directories aan te passen: http://www.microsoft.com/...as_fil_higv.mspx?mfr=true

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 25-10 14:28
rwb schreef op donderdag 22 mei 2008 @ 16:46:
[...]

Ik zou gewoon even de juiste folder opzoeken http://www.devguru.com/Te...shell_SpecialFolders.html

Als het goed is zal daar ook een AppData folder tussen zitten. Aangezien de application data niet perse in de documents and settings directory staan. In vista staat het bijvoorbeeld op een andere locatie.
De AppData map staat daar niet tussen, daarom is het noodzakelijk een van de methoden te gebruiken die ik al eerder in het topic aan gaf.

TS zegt dat wanneer hij WScript.echo gebruikt hij wel het juiste pad te zien krijgt, dus het is niet meer nodig om nog andere manieren te vinden voor het vinden van de AppData map, de volgende fout zal op een andere plaats zitten.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
_js_ schreef op donderdag 22 mei 2008 @ 23:05:
[...]

De AppData map staat daar niet tussen, daarom is het noodzakelijk een van de methoden te gebruiken die ik al eerder in het topic aan gaf.

TS zegt dat wanneer hij WScript.echo gebruikt hij wel het juiste pad te zien krijgt, dus het is niet meer nodig om nog andere manieren te vinden voor het vinden van de AppData map, de volgende fout zal op een andere plaats zitten.
In het code voorbeeldje wat hij geeft heeft hij Documents and Settings hard-coded staan. Dat is dus niet de juiste oplossing want daar hoeft de AppData folder helemaal niet te staan. Als hij niet in de specialfolders collectie staat ( Wat mij vreemd lijkt ) kan je de juiste folder altijd nog ergens uit het register halen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
mhoogendam schreef op donderdag 22 mei 2008 @ 16:44:
Je wilt bij een Constante een variable opgeven, dat gaat niet.
Ik zou de username opzoeken via wshnetwork
VBScript:
1
2
3
4
5
6
7
8
9
Set fso = CreateObject("Scripting.FileSystemObject") 
Set WshNetwork = WScript.CreateObject("WScript.Network")

strSOURCE = "\\Server\Share\Universeel Sjabloon\Letter.dot" 
strTARGET = "c:\Documents and Settings\" & WshNetwork.UserName & "\Application Data\Microsoft\Sjablonen"

If fso.folderexists(strTARGET) then 
    FSO.CopyFile strsource, strTARGET 
end if
Thanks mhoogendam! Dit was voor mij de oplossing.
Pagina: 1