windows - Running .VBS from Batch File -


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