Project1

标题: 如何在RmXP中运行批处理文件(*.bat) [打印本页]

作者: 卡多尔    时间: 2011-8-19 22:15
标题: 如何在RmXP中运行批处理文件(*.bat)
如何在RMXP中带入批处理文件(*.bat)
我试过象带入程序文件(*.exe)那样用`*.exe`这样的语句带入
但只是出现一个命令提示符(cmd)的黑框框
里面什么都没有……
请问如何在RmXP中运行批处理文件(*.bat)并正确的运行? dsu_plus_rewardpost_czw
作者: orzfly    时间: 2011-8-19 22:18
本帖最后由 orzfly 于 2011-8-19 22:26 编辑

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

楼主是想实现什么功能呢?
游戏里放 bat 可不好。
作者: 各种压力的猫君    时间: 2011-8-19 23:11
如果EXE能正常运行那么把BAT编译成COM也可以运行 =-=
不知道LZ你要做什么……感觉这么做完全没必要。
作者: 苏小脉    时间: 2011-8-20 10:28
调用 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。
作者: fux2    时间: 2011-8-20 11:17
  1. `shutdown -a`
复制代码

作者: 卡多尔    时间: 2011-8-20 22:34
我或许应该把那个文件传上来吧?


   @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-27 09:56
这个能执行bat的话。。。会不会做一些奇怪的操作呢……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1