中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 03:04
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 试做定时关机P处理,提问“变量的传递性”! 查看 1,051 回复 5
楼 主 试做定时关机P处理,提问“变量的传递性”! 发表于 2007-02-03 07:10 ·  中国 浙江 电信
中级用户
★★
积分 385
发帖 156
注册 2007-01-19 02:32
19年会员
UID 76955
性别 男
状态 离线
我做个定时关机的P处理。遇到个变量的问题,想知道变量是否能跨P处理传递,如不能有什么办法解决,具体看代码。

Main.cmd

if exist %temp%\sd.cmd del /Q /f "%temp%\sd.cmd"
if exist %temp%\hide.vbs del /Q %temp%\hide.vbs
ECHO 现在时间是:%tm1%点%tm2%分%tm3%秒
echo.
ECHO 请指定关闭的时间(分钟)
set shutdowntime=
SET /p shutdowntime=输入:
copy sd.cmd %temp%\
set path=%temp%\sd.cmd
echo set ws=WScript.CreateObject("WScript.Shell") >"%temp%\hide.vbs"
echo ws.Run "%path%",0 >>%temp%\hide.vbs
echo.
"%temp%\hide.vbs"
goto start

SD.cmd部分
@ECHO off
:again
set fen=%time:~3,2%
if %fen% EQU %shutdowntime% (shutdown -s -t 60 -c "即将关闭计算机")
ping 127.0.0.1 -n 10 >nul 2>nul
goto again
pause



主要是shutdowntime这个变量能否有办法从main.cmd传递过去,我不想在sd.cmd中来输分钟的时间,因为我要将它做成隐藏的。
2 发表于 2007-02-03 08:12 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
call sd.cmd "%shutdowntime%"
3 发表于 2007-02-03 08:38 ·  中国 浙江 电信
中级用户
★★
积分 385
发帖 156
注册 2007-01-19 02:32
19年会员
UID 76955
性别 男
状态 离线
回楼上的,我测试了下。不行。。。。
4 发表于 2007-02-03 11:39 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  有两种方法:

  1、call sd.cmd;
  2、call sd.cmd %shutdowntime%,然后把 sd.cmd 中的 %shutdowntime% 换成 %1。

  但是楼主却说第一种情况执行会出错,有点匪夷所思。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2007-10-16 18:48 ·  中国 广东 东莞 电信
初级用户
积分 26
发帖 12
注册 2007-10-13 18:43
18年会员
UID 99648
性别 男
状态 离线
用CALL命令可以调用的
6 发表于 2007-10-16 22:20 ·  中国 浙江 温州 电信
中级用户
★★
积分 458
发帖 196
注册 2006-10-05 12:04
19年会员
UID 64614
状态 离线
call sd.cmd 变量
sd.cmd用%1接收

sd.cmd头部加上一句
set shutdowntime=%1

[ Last edited by zerocq on 2007-10-16 at 10:22 PM ]
论坛跳转: