中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] »
作者:
标题: 如何准确输出原文件的内容 上一主题 | 下一主题
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 16 楼』:  

刚才贴错了,应该是下面内容:

原:
@Echo Wscript.Quit  >> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat

结果:
@Echo Wscript.Quit

2007-6-29 14:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 17 楼』:  

@Echo Wscript.Quit  >> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat

@Echo Wscript.Quit

少了 ’>> %%windir%%\Shutdown.vbs‘ 内容??搞不懂

2007-6-29 14:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 18 楼』:  

大哥>>需要转义啊

2007-6-29 14:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 19 楼』:  

转义
@Echo Wscript.Quit  ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat


2007-6-29 14:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 20 楼』:  

倒,我测试了 ^>> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat

难怪不行,每个符合都需要加 ^ 才行。

今天学不少了,哈,有空要看看 转义概念才行,谢谢各位。

还有,如果要把多个BAT合并一个,除了 Echo 方法,还有其它吗?

2007-6-29 15:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 21 楼』:  

//还有,如果要把多个BAT合并一个,除了 Echo 方法,还有其它吗?

copy a.bat+b.bat c.bat

2007-6-29 15:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 22 楼』:  

新问题,应该还是转义问题吧,没搞懂

原:
: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

2007-6-29 15:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 23 楼』:  

『第 21 楼』:  

//还有,如果要把多个BAT合并一个,除了 Echo 方法,还有其它吗?

copy a.bat+b.bat c.bat


这种不符合我这边条件,我是想有没有方法实现,BAT,判断条件,然后按判断结果输出对应已定义BAT(就是一个集合,判断条件,然后将符合条件得内容输出生成BAT,然后运行)

可以减少BAT数量,太多难管理,集中一个在管理服务器上运行,直观方便。

除了 ECHO ,以前好像看到有 Command /c ? 忘记了帖子内容...

2007-6-29 15:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 24 楼』:  

单句测试一下
@Echo @Echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2")  ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat
偶测试没发现问题。

不记得cmd下有command命令。

2007-6-29 16:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 25 楼』:  

原因找到了...不知道咋解决:

@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

^如何解决?我测试了 ^^ 上去,还是不行...

2007-6-29 16:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 26 楼』:  

二次转义需要三个^
@Echo @Echo Set objWMIService = GetObject("winmgmts:\\" ^^^& strComputer ^^^& "\root\cimv2")  ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat


2007-6-29 16:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 27 楼』:  

行了,改成

『第 25 楼』:  

原因找到了...不知道咋解决:

@Echo @Echo Set objWMIService = GetObject("winmgmts:\\" ^^^& strComputer ^^^& "\root\cimv2")  ^>^> %%windir%%\Shutdown.vbs >> %windir%\One-Week.bat

2007-6-29 16:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 28 楼』:  

三个^
第一个用来转义第二个
第三个用来转义后面的&

2007-6-29 16:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 29 楼』:  

嗯,受教了:)

还请教一下: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"   

删除才能正常

2007-6-29 16:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 30 楼』:  

晕。DEL是内部命令。用run是不能调用的。
可以直接用VBS的delete或deletefile函数删除啊。

2007-6-29 16:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: