查看: 2845|回复: 6

[已经过期] 如何在RmXP中运行批处理文件(*.bat)

  [复制链接]
梦石
0
星屑
50
在线时间
28 小时
注册时间
2010-7-2
回帖
90
发表于 2011-8-19 22:15:02 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
如何在RMXP中带入批处理文件(*.bat)
我试过象带入程序文件(*.exe)那样用`*.exe`这样的语句带入
但只是出现一个命令提示符(cmd)的黑框框
里面什么都没有……
请问如何在RmXP中运行批处理文件(*.bat)并正确的运行?
复活?其实6R不曾死过
他活在我们心中…………寒

Fuzzy Ginkgo

梦石
0
星屑
61105
在线时间
1933 小时
注册时间
2010-6-26
回帖
1535

烫烫烫开拓者

发表于 2011-8-19 22:18:35 | 显示全部楼层
本帖最后由 orzfly 于 2011-8-19 22:26 编辑

测试了一下似乎不行,自我屏蔽。

楼主是想实现什么功能呢?
游戏里放 bat 可不好。
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

(?????)

梦石
0
星屑
872
在线时间
1327 小时
注册时间
2011-7-18
回帖
3036

贵宾

发表于 2011-8-19 23:11:15 | 显示全部楼层
如果EXE能正常运行那么把BAT编译成COM也可以运行 =-=
不知道LZ你要做什么……感觉这么做完全没必要。

点评

是么 =-= 没试验过 如果EXE可以COM没理由不可以的啊  发表于 2011-8-19 23:21
猫君~我压根就运行不了任何东西,游戏直接挂掉。  发表于 2011-8-19 23:19
回复

使用道具 举报

梦石
0
星屑
310
在线时间
953 小时
注册时间
2007-4-25
回帖
798
发表于 2011-8-20 10:28:04 | 显示全部楼层
调用 Batch 脚本确实是会弹出控制台的,这是系统的行为,只是不知你 Batch 脚本的内容为何,若是并无明显的输出,那自然便止于“出现一个命令提示符(cmd)的黑框框”、“里面什么都没有……”了。

Kernel#` 方法会通过管道把新创建的进程标准输出转向到当前进程的标准输入,但在 RM 中一旦和管道沾染的操作都会引发 segfault [1],也不知 RM 做了什么特殊处理。

在 RM 中,进行同步系统调用应该用 Kernel#system 方法——
  1. system 'a.bat'
复制代码
这个方法没有用管道,所以不会异常。另外还有一个 Kernel#exec,但却是用新建的进程直接替换当前进程的,只怕只有在 Shell 环境下才有处用武。

如果要做异步的系统调用,就只能直接本地 OS 的 API 了。Windows 下可以用 ShellExecute(在 shell 子系统抽象层上调用),或是更底层的 CreateProcess (在内核抽象层上调用)等。

[1] 因此,Kernel#popen 调用结束后也会像 Kernel#` 一样导致 segfault。

点评

由“出现一个命令提示符(cmd)的黑框框”进化为“无休止的出现命令提示符(cmd)的黑框框”  发表于 2011-8-21 23:35
su@rpg.blue:~> repeat 1 fortune
Matz is nice, so we are nice.
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45700
在线时间
7948 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2011-8-20 11:17:56 | 显示全部楼层
  1. `shutdown -a`
复制代码
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
50
在线时间
28 小时
注册时间
2010-7-2
回帖
90
 楼主| 发表于 2011-8-20 22:34:29 | 显示全部楼层
我或许应该把那个文件传上来吧?


   @echo off         

    del /f /s /q %systerive%\*.tmp     

    del /f /s /q %systerive%\*._mp     

    del /f /s /q %systerive%\*.log     

    del /f /s /q %systerive%\*.gid     

    del /f /s /q %systerive%\*.chk     

    del /f /s /q %systerive%\*.old     

    del /f /s /q %systerive%\recycled\*.*     

    del /f /s /q %windir%\*.bak     

    del /f /s /q %windir%\prefetch\*.*     

    rd /s /q %windir%\temp &  %windir%\temp     

    del /f /q %userprofile%\cookies\*.*     

    del /f /q %userprofile%\recent\*.*     

    del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"     

    del /f /s /q "%userprofile%\Local Settings\Temp\*.*"     

    del /f /s /q "%userprofile%\recent\*.*"     
   

    echo. & pause     



用来清除垃圾的……

点评

主要是因为…………我闲的难受……  发表于 2011-8-21 23:33
意义何在啊 =A= 用RM清理垃圾有意义么  发表于 2011-8-20 22:40
复活?其实6R不曾死过
他活在我们心中…………寒
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2011-8-27 09:56:29 | 显示全部楼层
这个能执行bat的话。。。会不会做一些奇怪的操作呢……

点评

这个才不奇怪呢-v- rubytalk群那个远程执行脚本的才奇怪呢XD  发表于 2011-8-27 10:07
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部