我一直在写作一些批处理文件到我的桌面支持角色中。从批处理文件运行.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