|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『楼 主』:
 [已解决]如何在每天早上的8点后才把日期设置成当日?
 
使用 LLM 解释/回答一下 
 
 
要求一个批处理,每次执行时先验证一下时间,如果时间大于当天8点,则把当天日期赋值给某个变量,如果小于当日8点,则那个变量保持在当日的前一天?谢谢了。
 
 Last edited by ajian on 2010-12-8 at 19:13 ]
 
 
 
 
 |  | 
|  2010-12-3 16:47 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 |  | 
|  2010-12-3 22:56 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我现在设置一个变量为set day=%date:~5,2%%date:~8,2%%time:~0,2%,但0点到9点之间会有问题,因为显示是1204 0时之类的,日期和时间空了一格,有没有办法用0把这个空格填上,然后就可以作比较了。 
 
 
 
 |  | 
|  2010-12-4 16:28 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 4 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
其实这个东西比较简单,就是某日0点到8点之间,不去变更某个变量,我批处理不会弄,还望高手帮我啊。 
 
 
 
 |  | 
|  2010-12-4 16:36 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
for /f "tokens=1,2 delims= " %%a in ("%time:~0,2%") do set tmpTime=%%aif %date:~0,4%%date:~5,2%%date:~8,2%%tmpTime% geq %date:~0,4%%date:~5,2%%date:~8,2%8 (
 set tmpDate=%date:~0,4%%date:~5,2%%date:~8,2%
 ) else (
 set var=%date:~0,4%%date:~5,2%%date:~8,2%
 set /A tmpDate=var-1
 )
 for /f %%x in ('findstr %tmpDate:~5,4% User.txt') do (set y=%%x)
 
 哈哈,自己乱搞一下居然可以用。
 
 
 
 
 |  | 
|  2010-12-5 16:44 |  | 
|  | 
 
| Hanyeguxing 银牌会员
 
      正在学习中的菜鸟...
 
 
 积分 1039
 发帖 897
 注册 2009-3-1
 来自 在地狱中仰望天堂
 状态 离线
 | 
| 『第 6 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
楼主把日期改成3月1日或1月1日,看自己的代码运行还正常不? @echo off&setlocal enabledelayedexpansionfor /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set Y=%%a&set M=0%%b&set D=0%%c
 set K=%Y%-%M:~-2%-%D:~-2%
 for /f "delims=:." %%a in ("%time%") do (
 set a=0%%a
 if "!a:~-2!" lss "08" call:D,1
 )
 echo 符合条件的日期%K%
 pause&exit
 
 
 
 :D:子命令
 if "!M:~0,1!"=="0" set M=!M:~1!
 if "!D:~0,1!"=="0" set D=!D:~1!
 set/a D-=%1
 if %D% gtr 0 goto:Y
 :M
 set/a M-=1
 if !M!==0 set/a Y-=1,M=12
 set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31+D"
 if %D% leq 0 goto:M
 :Y
 set M=0%M%&set D=0%D%&set K=%Y%-!M:~-2!-!D:~-2!
 goto:eof
 
 Last edited by Hanyeguxing on 2010-12-6 at 13:28 ]
 
 
 
 
 |  
                  |  
  批处理之家 http://bbs.bathome.net/forum-5-1.html |  | 
|  2010-12-5 17:36 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 7 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
是不正常,忘了这个了,呵呵。
 Last edited by ajian on 2010-12-6 at 11:06 ]
 
 
 
 
 |  | 
|  2010-12-6 11:03 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by Hanyeguxing at 2010-12-5 17:36:楼主把日期改成3月1日或1月1日,看自己的代码运行还正常不?
 
 @echo off&setlocal enabledelayedexpansionfor /f "tokens=1-3 delims=-:/ " %%a in ("%dat ...
 
这个代码截取的时间不对啊,如果小于10点的话,那个变量a的值是前面会多一个空格。这个批处理还要设置如果小于10点的话,前面一个空格要去掉才行,不知道怎么设置。
 
 Last edited by ajian on 2010-12-6 at 11:29 ] 
 
 
 
 |  | 
|  2010-12-6 11:21 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 9 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
@echo off&setlocal enabledelayedexpansionfor /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set Y=%%a&set M=0%%b&set D=0%%c
 set K=%Y%-%M:~-2%-%D:~-2%
 for /f "tokens=1,2 delims= " %%a in ("%time:~0,2%") do set tmpTime=%%a
 if %tmpTime% lss 8 call:D,1
 echo 符合条件的日期%K%
 pause&exit
 :D
 if "!M:~0,1!"=="0" set M=!M:~1!
 if "!D:~0,1!"=="0" set D=!D:~1!
 set/a D-=%1
 if %D% gtr 0 goto:Y
 :M
 set/a M-=1
 if !M!==0 set/a Y-=1,M=12
 set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31+D"
 if %D% leq 0 goto:M
 :Y
 set M=0%M%&set D=0%D%&set K=%Y%-!M:~-2!-!D:~-2!
 
 弄成这样就行了,太感谢了。
 
 
 
 
 |  | 
|  2010-12-6 11:38 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
@echo off&setlocal enabledelayedexpansionfor /f "delims=" %%a in ('dir /s /b /a-d "C:\Documents and Settings\All Users\Application Data\Microsoft\Windows NT\MSFax\ActivityLog\InboxLOG.txt"') do (for /f "delims=" %%b in ('type "%%a"') do set lastLine=%%b %%b)
 call :getThe01thArg theStatus %lastLine%
 call :getThe07thArg theTime %lastLine%
 call :getThe13thArg theNumber %lastLine%
 call :getThe15thArg thePage %lastLine%
 for /f "tokens=1,2 delims=:" %%a in ("%theTime%") do set theTime=%%a点%%b分
 echo 传真接收%theStatus:~-3,2%,请及时处理! >> messg.txt
 echo 号码:%theNumber:~1,-1% >> messg.txt
 echo 时间:%date:~5,2%月%date:~8,2%日%theTime% >> messg.txt
 echo 页数:%thePage%页 >> messg.txt
 for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set Y=%%a&set M=0%%b&set D=0%%c
 set K=%Y%-%M:~-2%-%D:~-2%
 for /f "delims= " %%a in ("%time:~0,2%") do set tmpTime=%%a
 if %tmpTime% lss 8 call:D,1
 for /f %%x in ('findstr %K:~5,2%%K:~8,2% User.txt') do (set y=%%x)
 set y
 fetion --mobile=138XXXXXXXX --pwd=XXXXXXXX --to=%y:~5,11% --file-gb=messg.txt
 del messg.txt
 pause
 goto :EOF
 
 :D
 if "!M:~0,1!"=="0" set M=!M:~1!
 if "!D:~0,1!"=="0" set D=!D:~1!
 set/a D-=%1
 if %D% gtr 0 goto:Y
 :M
 set/a M-=1
 if !M!==0 set/a Y-=1,M=12
 set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31+D"
 if %D% leq 0 goto:M
 :Y
 set M=0%M%&set D=0%D%&set K=%Y%-!M:~-2!-!D:~-2!
 
 :getThe07thArg
 set varTage=%1
 for /l %%i in (1,1,7) do shift /7
 set %varTage%=%1
 
 :getThe13thArg
 set varNumber=%1
 for /l %%i in (1,1,13) do shift /1
 set %varNumber%=%1
 
 :getThe01thArg
 set varStatus=%1
 for /l %%i in (1,1,1) do shift /1
 set %varStatus%=%1
 
 :getThe15thArg
 set varPage=%1
 for /l %%i in (1,1,15) do shift /1
 set %varPage%=%1
 
 为什么这个批处理小于8点运行时会显示两行“命令语法不正确”,而大于8点就不会显示,但运行结果都是正确的,是不是哪里没弄好?
 
 
 
 
 |  | 
|  2010-12-6 12:47 |  | 
|  | 
 
| Hanyeguxing 银牌会员
 
      正在学习中的菜鸟...
 
 
 积分 1039
 发帖 897
 注册 2009-3-1
 来自 在地狱中仰望天堂
 状态 离线
 |  | 
|  2010-12-6 13:27 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
不好意思,本人是个菜鸟,只会七拼八凑,呵呵。那个:D :M :Y放到最后会有问题,显示两行“找不到操作数”,按你的方法,在set M=0%M%&set D=0%D%&set K=%Y%-!M:~-2!-!D:~-2!后面加goto :EOF后,已经正确了,再次感谢。
 
 
 
 
 |  | 
|  2010-12-6 13:46 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 | 
| 『第 13 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
@echo off&setlocal enabledelayedexpansionfor /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set Y=%%a&set M=0%%b&set D=0%%c
 set K=%Y%-%M:~-2%-%D:~-2%
 for /f "delims=:." %%a in ("%time%") do (
 set a=0%%a
 if "!a:~-2!" lss "08" call:D,1
 )
 echo 符合条件的日期%K%
 pause&exit
 
 
 
 :D:子命令
 if "!M:~0,1!"=="0" set M=!M:~1!
 if "!D:~0,1!"=="0" set D=!D:~1!
 set/a D-=%1
 if %D% gtr 0 goto:Y
 :M
 set/a M-=1
 if !M!==0 set/a Y-=1,M=12
 set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31+D"
 if %D% leq 0 goto:M
 :Y
 set M=0%M%&set D=0%D%&set K=%Y%-!M:~-2!-!D:~-2!
 goto:eof
 
 
 这段代码每月8、9日,如果时间小于8时,输出的日期会变成上个月的后两天。
 
 
 
 
 |  | 
|  2010-12-8 16:28 |  | 
|  | 
 
| Hanyeguxing 银牌会员
 
      正在学习中的菜鸟...
 
 
 积分 1039
 发帖 897
 注册 2009-3-1
 来自 在地狱中仰望天堂
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
不好意思,合并代码时变量产生了交叉 @echo off&setlocal enabledelayedexpansionfor /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set Y=%%a&set M=%%b&set D=%%c
 for /f "delims=:." %%a in ("%time%") do (
 set a=0%%a
 if "!a:~-2!" lss "08" (call:D,1) else call:Y
 )
 echo 符合条件的日期%K%
 pause&exit
 
 :D:子命令
 if "%M:~0,1%"=="0" set M=%M:~1%
 if "%D:~0,1%"=="0" set D=%D:~1%
 set/a D-=%1
 if %D% gtr 0 goto:Y
 :M
 set/a M-=1
 if !M!==0 set/a Y-=1,M=12
 set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31+D"
 if %D% leq 0 goto:M
 :Y
 set M=0%M%&set D=0%D%&set K=%Y%-!M:~-2!-!D:~-2!
 goto:eof
 
 Last edited by Hanyeguxing on 2010-12-8 at 16:45 ]
 
 
 | 此帖被 +1 点积分    点击查看详情 | 评分人:【 ajian 】 | 分数: +1 | 时间:2010-12-8 19:48 | 
 | 
 
 
 
 
 |  
                  |  
  批处理之家 http://bbs.bathome.net/forum-5-1.html |  | 
|  2010-12-8 16:40 |  | 
|  | 
 
| ajian 初级用户
 
   
 
 
 
 积分 38
 发帖 38
 注册 2010-11-17
 状态 离线
 |  | 
|  2010-12-8 16:48 |  |