Board logo

标题: "%~1" "%~0"是什么意思 [打印本页]

作者: zhaoyi     时间: 2008-10-28 10:26    标题: "%~1" "%~0"是什么意思

if "%~1"=="" start /min "" "%~0" h&exit
有一个批处理第一句就是这个我看了半天看不懂,
@echo off
for /f "delims=: tokens=1*" %%i in ('time /t') do call :Comp %%i %%j
goto :eof
:Comp
set /a Hour=%1
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 01 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 02 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 03 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 04 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 05 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 06 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 07 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 13 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 14 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 15 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 16 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 17 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 00 (d:\ntsd\shutdown.exe & goto :eof)
if %Hour% equ 23 (d:\ntsd\shutdown.exe & goto :eof)

shutdown.exe是一个关机程序
这里面的能不能简化下,,IF我到现在没找到这样的语名,,大于且小于,,
不然就不会用这个笨方法了
也就4楼说的那样,早上8:00-12:00,晚上18:00-22:00可以运行,其他时间都关机
这个批处理怎么写比较简单!

[ Last edited by zhaoyi on 2008-10-28 at 23:28 ]
作者: huahua0919     时间: 2008-10-28 12:11
了解進程的相關信息 tasklist
會試用findstr 查找相關字符
會試用for簡化程序
要了解%1 %2 %3 %0 等參數所代表的意思
作者: zhaoyi     时间: 2008-10-28 22:22
大哥你能不能给我改改.,我这个也太差了,太繁锁了

[ Last edited by zhaoyi on 2008-10-28 at 22:25 ]
作者: newsuper     时间: 2008-10-28 22:50
不知道楼主这个程序是要干什么呢?早上8:00-12:00,晚上18:00-22:00可以运行,其他时间都关机?
   这样的话,用at,或者schtasks限制登录时间就好了啊,莫非有其他意思?
作者: zhaoyi     时间: 2008-10-28 23:02
其实我想说实话,,at,或者schtasks命令不能在登陆帐号以前..根本无法运行..我尝试过N久了都不行...只能用这个办法了,然后把这个批得理加在注册表里,,hklm_system_CurrentControlSet_services里,做成系统服务形式,启机到登陆界面就自己动运行,最主要是防家里孩子过度上网,但IF做出来的效果太长了,,我想应该可简化面成几行.
作者: HAT     时间: 2008-10-28 23:11    标题: Re 5楼

为何不把整个问题的背景和你的完整想法以及问题在顶楼一次性描述清楚呢?
作者: newsuper     时间: 2008-10-28 23:46
那就给他一个限制时间的账户啊

net user   new 123 /add
net user   new /time:M-Su,08:00-12:00,18:00-22:00

以后让他用new这个账户登录就可以了啊
作者: zhaoyi     时间: 2008-10-29 00:07
楼住这个太过份了吧,,,那以后你老了想做什么,,那儿子就说:"爸!我一定会把你当宾客看待,不是说宾客是上帝吗"呵呵算了看来没人解决,,那就临时用,.
作者: HAT     时间: 2008-10-29 10:30    标题: Re 8楼

多潜水,多看教程。
if %Hour% geq 18 (
  if %Hour% leq 22 (
    d:\ntsd\shutdown.exe
    goto :eof
  )
)

作者: Lin7uan     时间: 2010-4-21 02:11
我是超菜菜鸟
知道什么是%1,但不知道什么是%~1
作者: exzzz     时间: 2010-4-21 11:03

if /i %time:~0,2% gtr 10 (


if /i %time:~0,2% lss 14 (
echo 现在时间大于10点且小于14点,将关机
shutdown -f -s -t 100
) else (
echo 时间大于14点,不关机
)


) else (
echo 时间小于10点,不关机
)

作者: luuk     时间: 2010-4-21 13:01
%0和%~0一样的效果吧,那么%1和%~1也应该一样吧
作者: slore     时间: 2010-4-21 17:11
for /?
回车5小左右吧,你就能看到你要的东西了。