![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 06:46 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何准确输出原文件的内容 |
| 可打印版本 2,604 / 38 |
| 第16楼 leton | 发表于 2007-06-29 14:50 |
| 初级用户 发帖 72 积分 170 | |
|
刚才贴错了,应该是下面内容:
原: @Echo Wscript.Quit >> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat 结果: @Echo Wscript.Quit |
|
| 第17楼 leton | 发表于 2007-06-29 14:52 |
| 初级用户 发帖 72 积分 170 | |
|
@Echo Wscript.Quit >> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat
@Echo Wscript.Quit 少了 ’>> %%windir%%\Shutdown.vbs‘ 内容??搞不懂 |
|
| 第18楼 wudixin96 | 发表于 2007-06-29 14:52 |
| 银牌会员 发帖 931 积分 1,928 | |
|
大哥>>需要转义啊
|
|
| 第19楼 HAT | 发表于 2007-06-29 14:58 |
| 版主 发帖 5,017 积分 9,023 | |
|
转义
|
|
| 第20楼 leton | 发表于 2007-06-29 15:12 |
| 初级用户 发帖 72 积分 170 | |
|
倒,我测试了 ^>> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat
难怪不行,每个符合都需要加 ^ 才行。 今天学不少了,哈,有空要看看 转义概念才行,谢谢各位。 还有,如果要把多个BAT合并一个,除了 Echo 方法,还有其它吗? |
|
| 第21楼 HAT | 发表于 2007-06-29 15:40 |
| 版主 发帖 5,017 积分 9,023 | |
|
//还有,如果要把多个BAT合并一个,除了 Echo 方法,还有其它吗?
copy a.bat+b.bat c.bat |
|
| 第22楼 leton | 发表于 2007-06-29 15:46 |
| 初级用户 发帖 72 积分 170 | |
|
新问题,应该还是转义问题吧,没搞懂
原: :Shutdown @Copy Nul %windir%\Shutdown.vbs @Echo strComputer = "." >> %windir%\Shutdown.vbs @Echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2") >> %windir%\Shutdown.vbs @Echo Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process") >> %windir%\Shutdown.vbs @Echo For Each objProcess in colProcesses >> %windir%\Shutdown.vbs @Echo If Right(objProcess.Name, 12) = "ntbackup.exe" Then >> %windir%\Shutdown.vbs @Echo Set objShell = CreateObject("WScript.Shell") >> %windir%\Shutdown.vbs @Echo objShell.Run "%windir%\Rtime.bat" >> %windir%\Shutdown.vbs @Echo Wscript.Quit >> %windir%\Shutdown.vbs @Echo End If >> %windir%\Shutdown.vbs @Echo Next >> %windir%\Shutdown.vbs @Echo Set objShell = CreateObject("WScript.Shell") >> %windir%\Shutdown.vbs @Echo objShell.Run "shutdown.exe -f -s -t 600" >> %windir%\Shutdown.vbs @Echo Wscript.Quit >> %windir%\Shutdown.vbs @Call %windir%\Shutdown.vbs @Goto End 输出修改源: @Echo :Shutdown >> %windir%\One-Week.bat @Echo @Copy Nul %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo strComputer = "." ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2") ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process") ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo For Each objProcess in colProcesses ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo If Right(objProcess.Name, 12) = "ntbackup.exe" Then ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo Set objShell = CreateObject("WScript.Shell") ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo objShell.Run "^%^%windir%%\Rtime.bat" ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo Wscript.Quit ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo End If ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo Next ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo Set objShell = CreateObject("WScript.Shell") ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo objShell.Run "shutdown.exe -f -s -t 600" ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Echo Wscript.Quit ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Call %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat @Echo @Goto End >> %windir%\One-Week.bat @Echo.>> %windir%\One-Week.bat @Echo :END >> %windir%\One-Week.bat @Echo @Goto Exit >> %windir%\One-Week.bat 结果: strComputer = "." Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process") For Each objProcess in colProcesses If Right(objProcess.Name, 12) = "ntbackup.exe" Then Set objShell = CreateObject("WScript.Shell") Wscript.Quit End If Next Set objShell = CreateObject("WScript.Shell") objShell.Run "shutdown.exe -f -s -t 600" Wscript.Quit 运行错误,对比发现有一句没输出成功: @Echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2") >> %windir%\Shutdown.vbs |
|
| 第23楼 leton | 发表于 2007-06-29 15:54 |
| 初级用户 发帖 72 积分 170 | |
|
『第 21 楼』:
//还有,如果要把多个BAT合并一个,除了 Echo 方法,还有其它吗? copy a.bat+b.bat c.bat 这种不符合我这边条件,我是想有没有方法实现,BAT,判断条件,然后按判断结果输出对应已定义BAT(就是一个集合,判断条件,然后将符合条件得内容输出生成BAT,然后运行) 可以减少BAT数量,太多难管理,集中一个在管理服务器上运行,直观方便。 除了 ECHO ,以前好像看到有 Command /c ? 忘记了帖子内容... |
|
| 第24楼 wudixin96 | 发表于 2007-06-29 16:00 |
| 银牌会员 发帖 931 积分 1,928 | |
|
单句测试一下
偶测试没发现问题。 不记得cmd下有command命令。 |
|
| 第25楼 leton | 发表于 2007-06-29 16:09 |
| 初级用户 发帖 72 积分 170 | |
|
原因找到了...不知道咋解决:
@Echo @Echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2") ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat 上面是第一次输出,然后结果: @Echo Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") >> %C:\WINDOWS%\Shutdown.vbs 运行就报错,因为缺了 ^ 符号,正确应该是 @Echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2") >> %C:\WINDOWS%\Shutdown.vbs ^如何解决?我测试了 ^^ 上去,还是不行... |
|
| 第26楼 HAT | 发表于 2007-06-29 16:10 |
| 版主 发帖 5,017 积分 9,023 | |
|
二次转义需要三个^
|
|
| 第27楼 leton | 发表于 2007-06-29 16:15 |
| 初级用户 发帖 72 积分 170 | |
|
行了,改成
『第 25 楼』: 原因找到了...不知道咋解决: @Echo @Echo Set objWMIService = GetObject("winmgmts:\\" ^^^& strComputer ^^^& "\root\cimv2") ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat |
|
| 第28楼 HAT | 发表于 2007-06-29 16:25 |
| 版主 发帖 5,017 积分 9,023 | |
|
三个^
第一个用来转义第二个 第三个用来转义后面的& |
|
| 第29楼 leton | 发表于 2007-06-29 16:29 |
| 初级用户 发帖 72 积分 170 | |
|
嗯,受教了:)
还请教一下:VBS 如何实现执行多个任务 strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process") For Each objProcess in colProcesses If Right(objProcess.Name, 12) = "ntbackup.exe" Then Set objShell = CreateObject("WScript.Shell") Wscript.Quit End If Next Set objShell = CreateObject("WScript.Shell") objShell.Run "shutdown.exe -f -s -t 600" objShell.Run "Del C:\WINDOWS\Shutdown.vbs" objShell.Run "Del C:\WINDOWS\Rtime.bat" Wscript.Quit 这个一执行就报错,只能把 objShell.Run "Del C:\WINDOWS\Shutdown.vbs" objShell.Run "Del C:\WINDOWS\Rtime.bat" 删除才能正常 |
|
| 第30楼 wudixin96 | 发表于 2007-06-29 16:34 |
| 银牌会员 发帖 931 积分 1,928 | |
|
晕。DEL是内部命令。用run是不能调用的。
可以直接用VBS的delete或deletefile函数删除啊。 |
|
| 上一页 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |