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为例

  1. 创建vbs、cmd或bat文档的快捷方式。注意是快捷方式,不是文档本身。否则exe可能出现莫名其妙的问题。
  2. win+r,输入shell:startup
  3. 把快捷方式放到弹出的当前目录,重启电脑即可;

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-脚本之家 (jb51.net)

VBS--基础语法整理 - 知乎 (zhihu.com)

VBS基础篇 - VBScript过程_在vbscript中,对子过程的调用使用_好一个大布丁的博客-CSDN博客

VBS基础篇 - 对象(2) - Dictionary对象_好一个大布丁的博客-CSDN博客

VBS基础篇 - 对象(3) - FileSystemObject对象_好一个大布丁的博客-CSDN博客

VBScript文件操作对象FileSystemObject大全_好一个大布丁的博客-CSDN博客

VBS基础篇 - 对象(4) - Drive对象_vbs 驱动器号_好一个大布丁的博客-CSDN博客

posted @ 2023-08-12 21:56  夕西行  阅读(1512)  评论(0编辑  收藏  举报