找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 6211|回复: 8

[原创] XP右键"新建带模版的批处理"-VBS升级版

[复制链接]
发表于 2025-5-2 16:06:59 | 显示全部楼层 |阅读模式
XP右键"新建带模版的批处理"-VBS升级版
功能 :
  通过在桌面,文件夹空白处鼠标右键 “ 新建”项  新建批处理
新建的批处理:  NewBAT1.bat
能自动用记事本打开新建了的批处理。
光标会回到空白内容的开头,可直接编写BAT代码,保存时会自动命名,
当便签使用时关闭后不会保存,文件夹内不会建立文件。
XP WIN7 通过。    NBAT.vbs:
  1. Set shell = CreateObject ("WSCript.shell")
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. If  WScript.Arguments.Count >0 Then
  4.     folderPath = fso.GetParentFolderName(WScript.Arguments(0))
  5.     Set folder = fso.GetFolder(folderPath)
  6. End If
  7. n = 0
  8. Do
  9.     If  n = 0 Then
  10.         fileName = "NewBAT.bat"
  11.     Else
  12.         fileName = "NewBAT" & n & ".bat"
  13.     End If
  14.     filePath = folder & "" & fileName
  15.     ' 如果没有重复文件名退出循环,并继续新建文件
  16.     If Not fso.FileExists(filePath) Then
  17.         Exit Do
  18.     End If
  19.     n = n + 1
  20. Loop
  21. Set newFile = fso.CreateTextFile(filePath, True)
  22. Set SO = CreateObject("WScript.Shell")
  23. SO.Run "notepad.exe " & """" & filePath & """"
  24. WScript.Sleep 50 ' 等待记事本打开
  25. SO.AppActivate "newFile" ' 激活记事本窗口
  26. SO.SendKeys   "   @echo off  & color 0b ~"
  27. SO.SendKeys   "setlocal enabledelayedexpansion ~"
  28. SO.SendKeys   " title NewBat & cd /d " & """" & "{%}{~}dp0" & """"  
  29. SO.SendKeys   "      {ENTER 8}"
  30. SO.SendKeys   " ::pause ~"
  31. SO.SendKeys   "    ping /n 3 127.1 >nul ~"
  32. SO.SendKeys   "exit ~"      ' ~ 回车键
  33. SO.SendKeys   "{up 10}   "   '↑退回前10行
  34. newFile.Close  ‘退出可能出现的输入法候选框
  35. WScript.Sleep 10
  36.    fso.DeleteFile filePath, True
复制代码
 楼主| 发表于 2025-5-2 16:15:26 | 显示全部楼层
本帖最后由 wzehu 于 2025-5-2 21:13 编辑

新建  批处理 鼠标右键菜单 注册表文件:
(也可用BAT app 注册,后续。。。  )   newbat.reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\newbat]
@="批处理"

[HKEY_CLASSES_ROOT\newbat\DefaultIcon]
@="%SystemRoot%\\system32\\shell32.dll,-153"

[HKEY_CLASSES_ROOT\newbat\shell]

[HKEY_CLASSES_ROOT\newbat\shell\open]

[HKEY_CLASSES_ROOT\newbat\shell\open\command]
@="notepad.exe %1"

[HKEY_CLASSES_ROOT\.bnt]
@="newbat"
"NullFile"=""

[HKEY_CLASSES_ROOT\.bnt\ShellNew]
"Command"="\"C:\\WINDOWS\\Newbat\\NBAT.vbs\" \"%1\""

(适配 后续BAT版)"Command"="\"C:\\WINDOWS\\Newbat\\NBAT.BAT\" \"%1\"" (后续BAT版)
注册后,右键 新建项  出现“批处理”
点击 就打开记事本 包含模板内容。
可当 “便签”  使用。关闭后不会保存,文件夹内不会建立文件。
 楼主| 发表于 2025-5-2 20:58:52 | 显示全部楼层
本帖最后由 wzehu 于 2025-5-10 13:34 编辑

XP右键"新建带模版的批处理"-VBS  版
Set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd /c color 86", 0, True
objShell.Run "cmd /c mode con cols=16 lines=1", 0, True

n = 0
Do   
    filePath = Left(WScript.Arguments(0), InStrRev(WScript.Arguments(0), "\")) & "NewBAT" & n & ".bat"   
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(filePath) Then
        n = n + 1
    Else
        Exit Do
    End If
Loop

sourcePath = objShell.ExpandEnvironmentStrings("%windir%") & "\Newbat\New.bat"
Set inFile = fso.OpenTextFile(sourcePath, 1)
Set outFile = fso.CreateTextFile(filePath, True)
outFile.Write(inFile.ReadAll)
objShell.Run "notepad.exe " & filePath, 1, False

WScript.Sleep 200
If fso.FileExists(filePath) Then
    fso.DeleteFile filePath
End If
WScript.Quit
 楼主| 发表于 2025-5-2 21:18:28 | 显示全部楼层
本帖最后由 wzehu 于 2025-5-4 14:43 编辑

XP右键"新建带模版的批处理"-BAT  版
@wzehu
我的电脑右键新建菜单增加个新建批处理选项。
用了好多年了。
每次新建BAT蛮方便的。
只是每次会出现DOS窗口闪一下。
不是很完美。下面是BAT脚本:

@echo off  & color 86
mode con cols=16 lines=1
:name   
set  file="%~dp1NewBAT%n%.bat"   
if exist "%file%" set/a n+=1&goto name   
type  %windir%\Newbat\New.bat >%file%  
start notepad.exe  %file%  
ping 192.0.2.2 -n 1 -w 20 >nul
DEL  %file%  
exit>nul
点“新建批处理”就会自己打开一个模板

原文链接:@wzehu的微博   https://weibo.com/2499535565/Ph9mBrkTG
发表于 2025-5-8 20:45:58 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-2 21:09 编辑

回复 4# wzehu

看了一遍4楼的批处代码,据其流程和目录文件要求改写了一版 vbs 代码,弥补了批处独立运行因窗口瞬间开关导致屏闪的缺陷(独立运行一个没有实时交互操作的批处脚本就有这个缺陷)... 以下代码存为 *.vbs 脚本文件运行(命令行参数用法与4楼批处代码要求相同)...仅供参考

  1. set ws = createobject("wscript.shell") : d = ws.CurrentDirectory
  2. set fso = createobject("scripting.filesystemobject")
  3. set v = wsh.arguments : if v.length>0 then d = fso.GetParentFolderName(v(0)) : end if
  4. if not fso.folderExists(d) then d = ws.CurrentDirectory
  5. f = d & "\newbat.bat" : n = 0
  6. do while fso.fileexists(f)
  7.    n = n+1 : f = d & "\newbat" & n & ".bat"
  8. loop
  9. wd = ws.expandenvironmentstrings("%windir%")
  10. if not fso.fileexists(wd & "\newbat\new.bat") then wsh.quit
  11. fso.copyfile wd & "\newbat\new.bat", f
  12. ws.run "notepad.exe " & f, 1, false
  13. wsh.sleep 200 : fso.deletefile f : wsh.quit
复制代码
 楼主| 发表于 2025-5-10 13:55:20 | 显示全部楼层
回复 5# aloha20200628

   
    刚才上传了 XP右键"新建带模版的批处理"-VBS  版
此 版主要是解决  CMD  闪框问题。三个版本都是用通过注册REG 运行。
当临时便签用真的特方面,自动完成 新建,打开,编辑动作。
                                   谢谢 @aloha20200628 好友热评 !
 楼主| 发表于 2025-7-2 17:17:39 | 显示全部楼层
回复 5# aloha20200628


    今天闲了测试5楼的vbs代码,  他什么也不做就退出了。。。。
发表于 2025-7-2 19:38:44 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-7-3 14:01 编辑

回复 7# wzehu

   5楼代码已订正,参照了4楼代码的流程和数据准备条件》命令行参数的目的是提供新建批处文件的有效路径(即命令行参数定义的文件名可任意但其路径必须真实,若命令行参数输入无效则转用当前路径),没有命令行参数则采用当前路径;要求已经存在 %windir%\newbat\new.bat 这个模板文件,如果未被发现则退出。
   用vbs代码改写4楼的批处版本主要是为了取消批处版本运行时产生的屏闪...
发表于 2025-7-3 14:02:26 | 显示全部楼层
回复 7# wzehu

如果要把5楼的vbs代码挂载到右键菜单,还可以进一步简化vbs代码如下

  1. tF="c:\windows\newbat\new.bat" : d=wsh.arguments(0) : f=d & "\newbat.bat"
  2. set fso=createobject("scripting.filesystemobject") : n=0
  3. do while fso.fileExists(f)
  4.    n=n+1 : f=d & "\newbat" & n & ".bat"
  5. loop
  6. if fso.fileExists(tF) then
  7.    fso.copyfile tF, f
  8. else set fp=fso.createTextfile(f, true) : fp.close : end if
  9. set ws=createobject("wscript.shell") : ws.run "notepad.exe " & f, 1, false
  10. wsh.sleep 200 : fso.deletefile f : wsh.quit
复制代码
以上代码存为 test.vbs,可放在 c:\windows\newbat 即与模板文件同目录,再开启管理员身份cmd窗口,直接在命令行运行以下代码创建一项暂定名为 '测试' 的右键菜单(资源管理器目录空白处右键弹出)即可...

  1. reg add HKEY_CLASSES_ROOT\Directory\background\shell\测试\Command /t REG_SZ /d "wscript.exe c:\windows\newbat\test.vbs "%v"" /f
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 19:16 , Processed in 0.018644 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表