Board logo

标题: [代码合集] 批处理代码求解释,谢谢! [打印本页]

作者: sunraojian    时间: 2012-8-12 00:28     标题: 批处理代码求解释,谢谢!

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('type 1.txt') do (
  4.    set /a m+=1
  5.    set "home!m!=%%a"     -------------------------1.为什么会有个home?  为什么双引号在整个式子的两边,而不为''home!m!''=''%%a''?
  6. )
  7. for /f "delims=" %%b in ('type 2.txt') do (
  8.    set /a n+=1
  9.    set "bat!n!=%%b" ---------------------------------2.为什么会有bat,同第一问
  10. )
  11. if %m% gtr %n% (
  12.    for /l %%c in (1 1 %m%) do (
  13.       if not "!home%%c!"=="" echo !home%%c! ------------这里的 !home%%c!代表什么?
  14.       if not "!bat%%c!"=="" echo !bat%%c!
  15.    )
  16. ) else (
  17.    for /l %%d in (1 1 %n%) do (
  18.       if not "!home%%d!"=="" echo !home%%d!
  19.       if not "!bat%%d!"=="" echo !bat%%d!
  20.    )
  21. )
  22. pause
复制代码
  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do set /a n+=1&call,set "_%%n%%=%%i"    ---------------为什么参数n会跟参数i相等,参数n不是数字吗,参数i不是文本内容吗,他们两怎么会相等?
  3. for /f "delims=" %%i in (2.txt) do set /a m+=1&call,set ".%%m%%=%%i"   ----------------为什么 ".%%m%%=%%i"中会有 . 上面的第二段代码为什么"_%%n%%=%%i" 中会有 _   
  4. if %n% gtr %m% (set "num=%n%") else (set "num=%m%")
  5. for /l %%i in (1,1,%num%) do (
  6.      if defined _%%i call,echo %%_%%i%%  ------------------defined后面的参数为什么会有_(_%%i)  
  7.      if defined .%%i call,echo %%.%%i%% ------------------defined后面的参数为什么会有.(.%%i )[attach]5580[/attach]
  8. )
  9. pause>nul
  10.  
复制代码

作者: canyuexiaolang    时间: 2012-8-12 10:13

全是一些基础。重点那只是变量赋值的方式罢了。多看教程。
set "a=1"
这样是复制的一种写法罢了。其他的还是要看看。
作者: sunraojian    时间: 2012-8-12 12:33

不明白呀!
作者: cutebe    时间: 2012-8-12 16:42

一开始看简单的例子好了,一下就太复杂的例子会把你搞蒙的
先看看 DIR CD REN ECHO 等命令吧
作者: CrLf    时间: 2012-8-12 16:51

楼主用 set 命令看下变量表就知道了:
  1. rem 以上为例一的原有代码
  2. set home
  3. set bat
  4. pause
复制代码
例二同理
作者: sunraojian    时间: 2012-8-12 22:06

回复 5# CrLf
什么变量表,那些基础我已经看了!  就学学如何写代码,但是与教程相差很大
作者: sunraojian    时间: 2012-8-12 22:07

回复 2# canyuexiaolang


    什么复制的一种方法,不是很明白,怎么SET教程没有这个
作者: apang    时间: 2012-8-13 09:29

for每循环一次,变量m自加1,也就设置了变量home1、home2、home3等等。可以把home改成其它,如A、B、小数点、下划线等等。
在set "home!m!=%%a"中,如果%%a中包含特殊字符,双引号可将其转义。你说的set ''home!m!''=''%%a''这种写法貌似不成在。
作者: sunraojian    时间: 2012-8-13 09:35

回复 8# apang


    谢谢,不错!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2