vbs、cmd或bat常用语句,如创建快捷方式、添加到用户环境变量Path、开机启动等
【简介】
vbs是Windows系统的脚本文件,与cmd、bat文件一样,双击执行,强大程度:vbs>cmd>bat。
题外话:PowerShell的ps1脚本更强大,但是无法直接双击运行,可以通过bat脚本来执行ps1文件。若有需求,可以自己研究下ps1
【vbs常用语句】
下属代码没明确指定的均为 xxx.vbs文件内容
- 1、创建快捷方式
- 2、运行exe
- 3、添加到用户环境变量Path、系统环境变量Path
- 4、创建txt文件、创建文件夹
- 5、运行cmd命令
- 6、开机延时启动
- 7、获取本地ip,拷贝本地文件夹到远程机器,以ip命名。
- 8、共享文件夹
- 9、打开远程桌面设置
1、创建快捷方式。“启动”文件夹里的快捷方式会开机自动运行,见下文【开机延时启动】
set ws=CreateObject("WScript.Shell") sDesktop=ws.SpecialFolders("Desktop") '特殊文件夹“桌面” sStartup=ws.SpecialFolders("Startup") '特殊文件夹“启动” set oLink=ws.CreateShortcut(sDesktop & "\MySoft.lnk") '在“桌面”创建快捷方式 oLink.TargetPath=ws.CurrentDirectory & "\MySoft.exe" '目标,ws.CurrentDirectory是xxx.vbs所在路径(注意与exe同目录) oLink.WorkingDirectory=ws.CurrentDirectory '起始位置 oLink.Save '保存 set oLink=ws.CreateShortcut(sStartup & "\MySoft.lnk") '在"启动"创建快捷方式 oLink.TargetPath=ws.CurrentDirectory & "\MySoft.exe" oLink.WorkingDirectory=ws.CurrentDirectory oLink.Save WScript.Quit
特殊文件夹参考 WScript.Shell对象SpecialFolders属性【Access软件网】 (accessoft.com)
创建快捷方式参考 使用VBS创建快捷方式的代码_vbs_脚本之家 (jb51.net)
没有找到bat创建快捷方式的方法,比如,创建“start.bat”这个文件的快捷方式到“启动”文件夹里。
可以手动用鼠标先创建快捷方式“start.bat - 快捷方式.lnk”,然后用bat指令复制到“启动”文件夹里
bat
::窗体不显示以下命令行 @echo off ::删除启动目录中的所有文件 set startPath=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ del /s /q "%startPath%" ::复制快捷方式到启动目录中 copy "D:\Release\start.bat - 快捷方式.lnk" "%startPath%"
bat
::复制bat同目录的Release文件夹里的所有内容,到目录D:\Release\中 xcopy ".\Release" "D:\Release\" /e /y
注意:用xcpoy的代码文件中,不可以出现set path,把path改为其它变量名即可(如startPath)。否则提示“xcopy不是内部或外部命令”。
xcopy复制文件夹要注意, xcopy 文件夹最后不加\ 目标文件夹加\
若左边的加\,Win7提示无效路径,Win10无问题。若右边的不加\,目标盘上不存在此目录则提示创建文件还是目录。
::复制共享的文件夹里的所有内容,到指定目录 xcopy "\\192.168.0.1\Upgrade" "D:\Release\" /e /y
共享文件夹参考共享文件夹、网络映射到本地(同一局域网下) - 夕西行 - 博客园 (cnblogs.com)
xcopy用法参考.bat脚本中的文件/文件夹复制的实现_bat 复制-CSDN博客
注意复制的是文件时:
echo F|xcopy aaa.txt bbb.txt
或
copy aaa.txt bbb.txt
2、运行exe。以下代码中 ws 承接上文,放在 WScript.Quit 之前
ws.Run "MySoft.exe",1,true '1——激活并显示窗口,true——此行执行结束才执行之后的内容
3、添加到用户环境变量Path、系统环境变量Path
'以添加D:\Release到用户环境变量Path中为例,不会重复添加,也不会清空原有内容 Set ws=CreateObject("WScript.Shell") Set userEnv=ws.Environment("User") '用户环境变量 'Set sysEnv=ws.Environment("System") '系统环境变量 s=Split(userEnv.Item("Path"),";") '用户环境变量Path的内容,用;拆分字符串 For Each i in s If i="D:\Release" Then WScript.Quit '发现已有,则退出,不再执行后续代码 end If Next userEnv.Item("Path") = "D:\Release;" & userEnv.Item("Path") 'WScript.Echo(userEnv.Item("Path")) '查看结果
cmd实现该功能参考如下
for /f "usebackq tokens=3" %%i in (`reg query HKCU\Environment /v Path`) do set oldpath=%%i echo %oldpath% | find /i "D:\Release" || reg add HKCU\Environment /v Path /t REG_SZ /f /d "D:\Release;%oldpath%"
4、创建txt文件、创建文件夹
set fso=CreateObject("Scripting.FileSystemObject") fso.CreateTextFile sCurrentDir & "\test.txt",true '创建txt文档,允许被覆盖 fso.CreateFolder sCurrentDir & "\test" '创建文件夹
5、运行cmd命令
'运行cmd指令,如关机、新建文件夹 'ws.Run "cmd /k shutdown -s -f -t 500",1,true ws.Run "cmd /k md D:\MySoft\test2",true '不显示cmd窗口
6、【开机延时启动】以开机后延时5s启动MySoft.exe为例
- 创建vbs、cmd或bat文档的快捷方式。注意是快捷方式,不是文档本身。否则exe可能出现莫名其妙的问题。
- win+r,输入shell:startup
- 把快捷方式放到弹出的当前目录,重启电脑即可;
vbs
wscript.sleep 5000 set ws=CreateObject("wscript.shell") ws.run "D:\Release\MySoft.exe" wscript.quit
cmd或bat
timeout /t 5 /nobreak > NUL start D:\Release\MySoft.exe
不想被中断,除非关闭程序或按ctrl+c,就加这个指令 /nobreak
如果还不想看到倒计时效果,就再加这个指令 > NUL
7、获取本地ip,拷贝本地文件夹到远程机器,以ip命名。注意远程机器的Copy文件夹要共享。
cmd代码:
@echo off for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "192.168.0."') do set name=%%b for /f "tokens=*" %%i in ("%name%") do set name=%%i xcopy ".\Save" "\\192.168.0.1\Copy\%name%\" /e /y timeout 1 rmdir /s/q Save timeout 1 mkdir Save
各行含义:
获取本地以192.168.0.开头的IP,如 192.168.0.100
获取的ip字符串左侧有空格,删除空格
拷贝本地Save文件夹,到远程机器(IP 192.168.0.1),以本地ip命名文件夹
拷贝完成后,删除本地文件夹,再新建个空的。等效剪切。
参考批处理之 for /f 中的delims和tokens_批处理 tokens-CSDN博客
8、共享文件夹
cmd代码,注意与文件夹在同一目录。如共享 D:\My 中的A和B文件夹,cmd文件放到 D:\My 中
@echo off net share A=D:\My\A /grant:everyone,FULL net share B=D:\My\B /grant:everyone,FULL reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa" /v LimitBlankPasswordUse /t reg_dword /d 0 /f
最后一行,禁用不允许空密码远程访问(即可以空白密码远程访问)。如果不禁用,当往共享的文件夹里传文件时,会提示“登录失败:用户帐户限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制”错误。如果想手动禁用,可以操作如下:
[开始]→[运行]输入secpol.msc,回车打开。
9、打开远程桌面设置
bat代码,双击即可打开电脑的远程桌面权限。
:: 打开远程桌面 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f :: 禁用不允许空密码远程访问 reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa" /v LimitBlankPasswordUse /t reg_dword /d 0 /f :: 设置administrator账户启用 net user administrator /active:yes :: 设置administrator密码为空 net user administrator "" :: 关闭防火墙 netsh firewall set opmode mode=disable netsh advfirewall set allprofiles state off
【vbs知识】
VBS基础篇 - VBScript过程_在vbscript中,对子过程的调用使用_好一个大布丁的博客-CSDN博客
VBS基础篇 - 对象(2) - Dictionary对象_好一个大布丁的博客-CSDN博客
VBS基础篇 - 对象(3) - FileSystemObject对象_好一个大布丁的博客-CSDN博客