[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[代码合集] 批处理代码求解释,谢谢!

  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.  
复制代码

全是一些基础。重点那只是变量赋值的方式罢了。多看教程。
set "a=1"
这样是复制的一种写法罢了。其他的还是要看看。

TOP

不明白呀!

TOP

一开始看简单的例子好了,一下就太复杂的例子会把你搞蒙的
先看看 DIR CD REN ECHO 等命令吧
如无特别说明,代码测试环境均为 XP SP3

TOP

楼主用 set 命令看下变量表就知道了:
  1. rem 以上为例一的原有代码
  2. set home
  3. set bat
  4. pause
复制代码
例二同理

TOP

回复 5# CrLf
什么变量表,那些基础我已经看了!  就学学如何写代码,但是与教程相差很大

TOP

回复 2# canyuexiaolang


    什么复制的一种方法,不是很明白,怎么SET教程没有这个

TOP

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

TOP

回复 8# apang


    谢谢,不错!

TOP

返回列表