中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 02:23
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]在开始启动菜单中隐藏运行批处理的怪事
楼 主 [已结]在开始启动菜单中隐藏运行批处理的怪事 发表于 2008-12-04 19:50 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
UID 124135
性别 男
状态 离线
if "%1"=="" start mshta vbscript:CreateObject("WScript.Shell").run("%~nx0 h",0)(window.close)&&exit


此代码是隐藏运行批处理的..我写了个批处理..把此批处理放到开始"启动"里面..
然后电脑一开机就提示脚本错误...说找不到文件...

可是我直接手动运行是可以的啊。真的不知道为什么哪里错了.难道加到启动项里,开机运行的形式哪里不相同了吗?/
还请各位高手帮忙解决...

[ Last edited by HAT on 2008-12-5 at 13:57 ]
2 发表于 2008-12-04 20:25 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
UID 124135
性别 男
状态 离线
怎么没人来看看,郁闷了
3 发表于 2008-12-04 20:29 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
试试把 %~nx0 改成 %0
4 发表于 2008-12-04 20:50 ·  中国 福建 泉州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
UID 124135
性别 男
状态 离线
回TREE兄,之前已经测试过,没有用,一样的错误..
此问题着实让人郁闷啊。
5 发表于 2008-12-04 22:49 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
这样试试呢?
run("""%~0"" h",0)
6 发表于 2008-12-05 00:00 ·  中国 上海 杨浦区 电信
高级用户
★★★
积分 916
发帖 377
注册 2004-03-08 00:00
UID 19523
性别 男
状态 离线
估计又要用ping进行延时处理

这种情况偶碰到很多的,个人理解为在某某启动时刻不能运行一些命令所以只能用ping进行延时处理直到进入桌面或者某种时刻才能运行.
以前用.cmd运行sc控制服务的批处理可以放置在计算机启动阶段运行.
后来用nsi封装为.exe文件就只能在用户启动阶段运行.
差别一个用cmd.exe运行一个需要用到wscript.exe
7 发表于 2008-12-05 13:05 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
UID 124135
性别 男
状态 离线
回LXMXN哥哥..没用的,这个方法我也测试过.

回楼上的DATO兄,我也是这么认为的,后来我解决了.用如下方式解决...

@echo off
if not exist "%USERPROFILE%\「开始」菜单\程序\启动\hide.vbs" call :add

:loop
.............................
goto :loop

:add
echo Dim Wsh>"%USERPROFILE%\「开始」菜单\程序\启动\hide.vbs"
echo Set Wsh = WScript.CreateObject("WScript.Shell")>>"%USERPROFILE%\「开始」菜单\程序\启动\hide.vbs"
echo WScript.Sleep(0)>>"%USERPROFILE%\「开始」菜单\程序\启动\hide.vbs"
echo Wsh.Run "C:\windows\chuli.bat",false,false>>"%USERPROFILE%\「开始」菜单\程序\启动\hide.vbs"
copy /y "%~nx0" "c:\windows\">nul
start mshta vbscript:CreateObject("WScript.Shell").Run("%~NX0",0)(window.close)&&exit
goto :eof


[ Last edited by hackate on 2008-12-5 at 13:07 ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
HAT +2 2008-12-05 13:55
ysc +2 2009-11-21 09:29
8 发表于 2008-12-05 19:33 ·  中国 上海 电信
初级用户
积分 37
发帖 39
注册 2007-12-07 22:44
UID 105020
性别 男
状态 离线
这个贴子值得收藏
9 发表于 2009-02-11 11:05 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
新手上路
积分 3
发帖 2
注册 2006-11-02 03:50
UID 69249
性别 男
状态 离线
不错不错呀
10 发表于 2009-02-11 12:59 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
UID 135147
性别 男
来自 广西
状态 离线
其实应该直接把:
start mshta vbscript:CreateObject("WScript.Shell").Run("%~NX0",0)(window.close)&&exit
中的Run("%~NX0",0) 改成:
Run("%~f0",0) 或者Run("%~dpnx0",0)
就可以了吧
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
5551551 +2 2009-02-21 21:34
精简
=> 个人网志
11 发表于 2009-11-19 18:25 ·  中国 四川 成都 电信
新手上路
积分 15
发帖 12
注册 2008-12-01 09:53
UID 132541
性别 男
状态 离线
学习。其实DATO的说法很实用。
论坛跳转: