我一直在寫作一些批處理文件到我的桌面支持角色中。從批處理文件運行.VBS
我一直在編寫一個配置文件備份腳本幾個月,現在,隨着角色需求和新問題的出現而變化。
我想從批處理文件中運行以下VBS腳本並將其輸出指向另一個文件夾。
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)
For i = 0 to oDrives.Count - 1
oFiletxt.WriteLine "Net Use " & oDrives.Item(i) & " " & chr(34)& oDrives.Item(i+1) & chr(34) & " /persistent:yes"
Next
oFiletxt.Close
此VBS腳本寫了(不是我),以導出用戶映射網絡驅動器到使用netuse命令來重新映射一個CMD文件。
如果VBS腳本在批處理文件之外運行,那麼它的工作正常,但是當它使用cscript等在批處理內運行時,它會創建輸出文件Mapped_Network_Drives_%username%.cmd,但它是空。
REM pushes script to use batch file Drive Letter as working directory
setlocal & pushd %~d0
ECHO =============================
ECHO Creating Backup Folder
ECHO =============================
MD "%UserName%_Backup"
ECHO =============================
ECHO Backing Up Mapped Network Drives
ECHO =============================
REM pushes script to use Backup Folder as working directory
pushd "%~d0%UserName%_Backup"
REM Runs VB script to backup Mapped Network Drives
cscript //nologo "%~dp0Mapped_Network_Drives.vbs"
pause
以上是對我一直在使用的代碼的剪切。
對我的作品。提示:不要忘記在最後調用'popd'(兩次)(以保持一致)。同樣在我的機器上,我只有1個映射的網絡驅動器'oDrives.Count'是2(拋出'下標超出範圍',但也許我的WMI搞砸了)。底線,批處理運行創建'.cmd'文件。 – CristiFati