i have been writing batch files specific job in role desktop support.
i have been scripting profile backup script couple of months now, changing role requires , new issues crop up.
i trying run following vbs script inside batch file , point output folder.
set onet= wscript.createobject("wscript.network") set odrives = onet.enumnetworkdrives ouser = onet.username set ofilesys = createobject("scripting.filesystemobject") set ofiletxt = ofilesys.createtextfile("mapped_network_drives_"&ouser&".cmd", true) = 0 odrives.count - 1 ofiletxt.writeline "net use " & odrives.item(i) & " " & chr(34)& odrives.item(i+1) & chr(34) & " /persistent:yes" next ofiletxt.close
this vbs script made (not me) export user mapped network drives cmd file uses netuse command remap them.
if vbs script run outside of batch file works fine, when run inside batch using cscript, etc, creates output file mapped_network_drives_%username%.cmd, empty.
rem pushes script use batch file drive letter working directory setlocal & pushd %~d0 echo ============================= echo creating backup folder echo ============================= md "%username%_backup" echo ============================= echo backing mapped network drives echo ============================= rem pushes script use backup folder working directory pushd "%~d0%username%_backup" rem runs vb script backup mapped network drives cscript //nologo "%~dp0mapped_network_drives.vbs" pause
above snipped of code have been working with.
try this
vbs part : corrected iteration on drive collection
option explicit dim username, drives wscript.createobject("wscript.network") username = .username set drives = .enumnetworkdrives end dim drive wscript.createobject("scripting.filesystemobject").createtextfile("mapped_network_drives_" & username & ".cmd", true) drive = 0 (drives.count-1) step 2 .writeline "net use " & drives.item(drive) & " """ & drives.item(drive+1) & """ /persistent:yes" next .close end
batch part: ensures path references handled
@echo off setlocal enableextensions disabledelayedexpansion call :getcurrentbatchfile _f0 %%a in ("%_f0%") ( set "backupfolder=%%~da\%username%_backup" set "scriptsfolder=%%~dpa" ) md "%backupfolder%" 2>nul pushd "%backupfolder%" && ( cscript //nologo "%scriptsfolder%\mapped_network_drives.vbs" popd ) || ( echo backup folder not exist ) goto :eof :getcurrentbatchfile returnvar set "%~1=%~f0" goto :eof
Comments
Post a Comment