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

[ 新手习题 1 ] 批处理数值型变量的交换

[复制链接]
发表于 2009-3-4 21:33:25 | 显示全部楼层
@echo off
set/p a=请输入a的数值 & set/p b=请输入b的数值
echo a是%a%
echo b是%b%
goto x
set/p a=%b% & set/p b=%a%
:x
echo ab交换后a是%b%
echo ab交换后b是%a%
pause
发表于 2009-3-4 22:44:27 | 显示全部楼层

xchg指令

  1. @echo off
  2. set a=2
  3. set b=3
  4. (echo a100&echo mov ax,%a%&echo mov bx,%b%&more /e +5 "%~f0")|debug|find /v ""
  5. pause&exit/b
  6. xchg ax,bx

  7. t=100 3
  8. q
复制代码
发表于 2009-3-5 16:03:54 | 显示全部楼层

  1. @echo off
  2. set /a a=5
  3. set /a b=3
  4. set /a a=%a%+%b%
  5. set /a b=%a%-%b%
  6. set /a a=%a%-%b%
  7. echo %a%
  8. echo %b%
  9. pause
复制代码

评分

参与人数 1PB +2 收起 理由
wxcute + 2 加减交换法,还是很好的。

查看全部评分

发表于 2009-3-5 16:08:14 | 显示全部楼层
刚发现我跟9楼的一样  
同时佩服8楼  这个代码最好
发表于 2009-3-5 16:14:05 | 显示全部楼层
根据8楼的启发   发现这样也行
  1. @echo off
  2. set /a a=5
  3. set /a b=3
  4. for /l %%i in (1,1,1) do set a=%b%&set b=%a%
  5. echo %a%
  6. echo %b%
  7. pause
复制代码
跟变量延迟一个道理  吼吼  能不能给我点分呀

评分

参与人数 1PB +1 收起 理由
wxcute + 1 何必拿个FOR来掩人耳目呢,你没发现它很多余 ...

查看全部评分

发表于 2009-3-5 18:10:49 | 显示全部楼层

%E5%9B%9E%E5%A4%8D 21楼 %E7%9A%84%E5%B8%96%E5%AD%90

学习中…………………
发表于 2009-5-8 22:39:14 | 显示全部楼层
很好!!有的真的有意思!
发表于 2009-7-7 07:58:28 | 显示全部楼层
数值交换
@echo off&set/a A=2,B=3
set/a A=B,B=%A%
echo A=%A% , B=%B%&pause>nul


任何变量
@echo off&set A=上 &set B=下
set A=%B% &set B=%A%
echo A=%A% , B=%B% &pause>nul

评分

参与人数 1PB +1 收起 理由
wxcute + 1 鼓励一下,不错。

查看全部评分

发表于 2009-7-9 04:00:01 | 显示全部楼层

巧解

@echo off
set /p a=请输入a:
set /p b=请输入b:
set a=%b% & set b=%a%
echo a=%a% b=%b%
pause>nul
里面涉及到变量延迟,我就不过多解释了,有兴趣有多找些相关资料学习

评分

参与人数 1PB +1 收起 理由
wxcute + 1 请用CODE将代码闭合,方便他人复制阅读。[q ...

查看全部评分

发表于 2009-7-9 04:11:52 | 显示全部楼层

一般解

@echo off
set /p a=请输入a:
set /p b=请输入b:
set /a a+=%b%
set /a b=%a%-%b%
set /a a-=%b%
echo a=%a% b=%b%
pause>nul
此程序只能a,b是数值时可行,有字母就不行,上面的程序却无论a,b是数值还是字母,甚至两者混合都可行
发表于 2009-7-13 00:17:46 | 显示全部楼层
  1. @echo off
  2. set a=2
  3. set b=3
  4. set a=%b% & set b=%a%
  5. echo a变为%a% b变为%b%
  6. pause
复制代码
噢,24,25楼的用了
发表于 2009-7-16 12:12:42 | 显示全部楼层
@echo off
set a=2
set b=3
set a=%b% & set b=%a%
echo %a% & echo %b%
pause

只要用上管道,由于预处理  好象就可以了……
 楼主| 发表于 2009-7-16 20:06:35 | 显示全部楼层

回复 28楼 loop3231262 的帖子

管道在哪里? 不是连接符吗?
发表于 2009-7-25 15:58:00 | 显示全部楼层
@echo off
set/p a=请输入a:
set/p b=请输入b:
set c=0
set /a c=%a%
set /a a=%b%
set /a b=%c%

echo %a% %b%
pause

评分

参与人数 1PB +1 收起 理由
wxcute + 1 中间变量法,鼓励一下。

查看全部评分

发表于 2009-8-6 20:47:29 | 显示全部楼层

回复 7楼 的帖子

  1. Set "a=%random%" & set "b=%random%"
  2. echo %a% %b%
  3. set /a b=a,a=b
  4. echo %a% %b%
复制代码
好像应该是set/a b=%a%,a=%b%吧,,好像少了%%号

评分

参与人数 1PB +1 收起 理由
wxcute + 1 观察很仔细,谢谢指正。

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:50 , Processed in 0.024150 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表