[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
你既然已经知道了不补零算出来的时间肯定是错的,为何还要坚持这样呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

确实不知道怎么写。能不能举个例子?不会是在%date:~%这样形式的代码中插for循环吧?

TOP

QQ群里面讨论的挺热闹啊,你不是说已经明白了么?如果还是想不清楚,就让zqz接着讲^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

是不是这样?
for %%a in (%var%) do (if %%a lss 10 (set var0=!var0!,0%%a) else set var0=!var0!,%%a)
问题是我不知道怎么把它套到程序里。

TOP

call ateToMins %date:~0,4% %date:~5,2% %date:~8,2% %time:~0,2% %time:~3,2% Mins

在调用函数的时候,使用补零之后的小时和分钟即可。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. if %time:~1,1% lss 10 (set hh=0%time:~1,1%) else (set hh=%time:~0,2%)
  2. echo %hh%
  3. pause
复制代码
我用echo命令查了下,纠正下batcher的错误。小时需要补零,分钟不需要补零,系统会自动补零。

[ 本帖最后由 lazygc520 于 2009-8-21 10:06 编辑 ]

TOP

回复 36楼 的帖子

是的,分钟会自动补零。
现在是上午10点多钟,你确认这个代码能够获取正确的小时数?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. C:\Documents and Settings\Admin\桌面>if 10 LSS 10 (set hh=00 )  else (set hh=10)
  2. C:\Documents and Settings\Admin\桌面>echo 10
  3. 10
复制代码
这是运行结果。

TOP

你到底运行的哪个代码?
C:\Test>type test.bat
if %time:~1,1% lss 10 (set hh=0%time:~1,1%) else (set hh=%time:~0,2%)
echo %hh%

C:\Test>test.bat

C:\Test>if 0 LSS 10 (set hh=00 )  else (set hh=10 )

C:\Test>echo 00
00
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哦,写错了!
  1. if %time:~0,2% lss 10 (set hh=0%time:~1,1%) else (set hh=%time:~0,2%)
  2. echo %hh%
  3. pause
复制代码

TOP

既然时间截取没有问题了,那就继续检查代码里面有没有其它错误吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

嗯。现在for循环那里还有些问题,你能不能帮我看看小时的信息如何获取?
FileDate2.txt的格式:
-rw-rw-rw-   1 100      100        22396 Apr 15 14:28 F12345600F.FT2
  1. (for /f "usebackq tokens=1-9 delims=:, " %%a in ("%temp%\FileDate2.txt") do (
  2.   setlocal enabledelayedexpansion /*获取14:28中14的信息*/
  3.   if "%%f" equ "Jan" (
  4.     set FileM=01
  5.   ) else if "%%f" equ "Feb" (
  6.     set FileM=02
  7.   ) else if "%%f" equ "Mar" (
  8.     set FileM=03
  9.   ) else if "%%f" equ "Apr" (
  10.     set FileM=04
  11.   ) else if "%%f" equ "May" (
  12.     set FileM=05
  13.   ) else if "%%f" equ "Jun" (
  14.     set FileM=06
  15.   ) else if "%%f" equ "Jul" (
  16.     set FileM=07
  17.   ) else if "%%f" equ "Aug" (
  18.     set FileM=08
  19.   ) else if "%%f" equ "Sep" (
  20.     set FileM=09
  21.   ) else if "%%f" equ "Oct" (
  22.     set FileM=10
  23.   ) else if "%%f" equ "Nov" (
  24.     set FileM=11
  25.   ) else if "%%f" equ "Dec" (
  26.     set FileM=12
  27.   )
  28.   set FileD=10%%g
  29.   set FileD=!FileD:~-3!
  30.   set FileH=10%%g
  31.   set FileH=!FileH:~-2!
  32.   if "!FileM!" equ "%DstMonth%" (        
  33.   if "!FileD!" equ "%DstDay%" (       /*判断条件是不是还要加上日期的信息?*/
  34.     if "!FileH!" equ "%DstHour%" (
  35.      echo get "%%i" "%DownFolder%\%%i"
  36.     )
  37.   )
  38. )
  39.   endlocal
  40. ))>>"%ftpDown%"
复制代码
主要是以上2点疑问,希望batcher解答一下。

[ 本帖最后由 lazygc520 于 2009-8-21 14:05 编辑 ]

TOP

我现在是这样写的:
set FileD=10%%g
set FileD!FileD:~-3!
set FileH=10%%g
set FileH=!FileH:~-2!

然后就报错:环境变量 FileD0xx 没有定义

TOP

错误的结果(TempDown2.txt部分内容):
  1. C:\Documents and Settings\Admin\桌面>(
  2. setlocal enabledelayedexpansion  
  3. if "Jun" EQU "Jan" (set FileM=01 )  else if "Jun" EQU "Feb" (set FileM=02 )  else if "Jun" EQU "Mar" (set FileM=03 )  else if "Jun" EQU "Apr" (set FileM=04 )  else if "Jun" EQU "May" (set FileM=05 )  else if "Jun" EQU "Jun" (set FileM=06 )  else if "Jun" EQU "Jul" (set FileM=07 )  else if "Jun" EQU "Aug" (set FileM=08 )  else if "Jun" EQU "Sep" (set FileM=09 )  else if "Jun" EQU "Oct" (set FileM=10 )  else if "Jun" EQU "Nov" (set FileM=11 )  else if "Jun" EQU "Dec" (set FileM=12 )  
  4. set FileD=105  
  5. set FileD!FileD:~-3!  
  6. set FileH=105  
  7. set FileH=!FileH:~-2!  
  8. if "!FileM!" EQU "08" (if "!FileD!" EQU "21" (if "!FileH!" EQU "13" (echo get "59" "E:\\59" ) ) )  
  9. endlocal
  10. )
复制代码
正确的结果内容应该是以下格式:
  1. D:\batch>(
  2. setlocal enabledelayedexpansion  
  3. if "Jun" EQU "Jan" (set FileM=01 )  else if "Jun" EQU "Feb" (set FileM=02 )  else if "Jun" EQU "Mar" (set FileM=03 )  else if "Jun" EQU "Apr" (set FileM=04 )  else if "Jun" EQU "May" (set FileM=05 )  else if "Jun" EQU "Jun" (set FileM=06 )  else if "Jun" EQU "Jul" (set FileM=07 )  else if "Jun" EQU "Aug" (set FileM=08 )  else if "Jun" EQU "Sep" (set FileM=09 )  else if "Jun" EQU "Oct" (set FileM=10 )  else if "Jun" EQU "Nov" (set FileM=11 )  else if "Jun" EQU "Dec" (set FileM=12 )  
  4. set FileD=105  
  5. set FileD=!FileD:~-2!  
  6. if "!FileM!" EQU "08" (if "!FileD!" EQU "20" (if "!FileH!" EQU "hours"(echo get "F12345678K.SWM" "F:\\F12345678K.SWM" ) )  )
  7. endlocal
  8. )
复制代码

TOP

结果这段代码应该插入到哪里呢?
if %time:~1,1% lss 10 (set hh=0%time:~1,1%) else (set hh=%time:~0,2%)

TOP

返回列表