写⼀个简单的批处理(bat)
看了看以前写的总结,发现有这样的⼀个批处理,还是挺有意思。拿出来分享⼀下。
1、    for /d %%i in (*) do (
2、    rem set _day=%%~ti
3、                    cd %%i
4、                      for  %%j in (*) do (
5、                              @echo j: %%j
6、                              set file1=%~dp0%%i\%%j
7、                              @echo xxx: %~dp0%%i\%%j
8、                              set file2=C:\text\%%i\%%j
9、                              @echo yyy: C:\text\%%i\%%j
10、                            echo file1 : %file1%
11、                                  echo file2 : %file2%
12、                            rem  set t1=%%~tj
13、                            rem  set t2=C:\text\%%i\%%~tj  rem 当前⽬录名
批处理文件怎么做14、                            rem  echo t1:!t1!
15、                            rem  echo t2:!t2!
16、                            call :deal "%~dp0%%i\%%j" "C:\text\%%i\%%j" & rem调⽤时间对⽐
17、                            )
18、                    cd ../
19、                  echo i: %%i
20、                  echo t: %%~ti
21、    )
22、    :deal
23、    rem if "%~t1"=="%~t2" (echo same)else echo different
24、    if "%~t1" gtr "%~t2" (
25、    pause
26、    echo copy
27、    copy %1 %2
28、    )
下⾯是分析:
第⼀⾏:⼀个for循环,“/d”是只遍历⽬录,“%%i”是给“i”赋值,也就是循环的赋予“i”不同的⽂件夹的名称,“in(*)”是代表默认是当前⽂件夹⾥⾯所有⼦⽂件夹,do(…)⾥⾯是要进⾏的处理,这⾥要注意格式。
第⼆⾏:“望⽂⽣义”就是要进⼊到⼦⽂件夹⾥⾯了。
第三⾏:这⾥嵌套了⼀个for循环,什么意思??哈哈,看看第⼀⾏的解释吧。
第四⾏:打印j的值,也就是⼦⽂件夹⾥⾯的⽂件名,“echo”前⾯多了⼀个“@”表⽰以下指令不需要在dos窗⼝显⽰了。
第五⾏:设置⼀个变量,并给它赋值,“%~dp0”是当前⽂件路径,拿file1的值知道了吗,其实就是路径+⽂件名。
第六⾏:打印。
第七⾏:估计第五⾏表⽰什么你懂了,那咋们就继续往下吧。
第九⾏:
第⼗⾏:
第⼗⼀⾏:
第⼗⼆到⼗五⾏:是注释语句,“rem”当时是调试⽤的。
第⼗六⾏:进⾏了⼀个调⽤:“call”,其调⽤的是标⽰符为“:deal”下⾯的内容,传递进了两个参
数:"%~dp0%%i\%%j"跟"C:\text\%%i\%%j",其实也就是路劲+⽂件名,这样⼀说,明了了吧,两个要⽐较的⽂件呢。
第⼆⼗四⾏:那我们就顺便看看“:deal”⾥⾯是什么东东吧。⼀个“if”,条件判断语句:如果“%~t1”⼤于“%~t2”就执⾏括号⾥⾯的内容。“gtr”是⽐较符,⼤于的意思,更多⽐较符的解释可以查看相关资料。⽽“%~t1”跟“%~t2”呢,根据我们上⾯陈述的程序的功能,⽆疑就是两个⽂件的修改时间了。这⾥需要解释⼀下,"%1"跟"%2"分别代表“call”语句中传递进来的两个参数,⽽"%~t1"跟"%~t2"呢,就是获取两个参数的修改时间了。括号⾥⾯值得⼀提的是“pause”语句,意思是“阻断⼀下”,运⾏⽂件是在dos窗⼝下看到的是“请按任意键继续”。说到这⾥,括号⾥⾯的剩下内容应该看懂了吧。
第⼗⼋⾏:回来for循环中,这⾏的意思跟linux下是⼀样的:跳到上⼀层⽬录下。后⾯两⾏的意思就不要解释了,当时也是调试⽤的。执⾏完这两条语句,我们就重新给“%%i”赋值,这样就可以达到了遍历的⽬的了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。