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

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

[复制链接]
发表于 2009-8-6 20:56:58 | 显示全部楼层
  1. Set "a=%random%" & set "b=%random%"
  2. echo %a% %b%
  3. set b=%a%&set a=%b%
  4. echo %a% %b%
  5. pause
复制代码
我怎么只用set 也可以呢,不用set/a啊

评分

参与人数 1PB +1 收起 理由
wxcute + 1 鼓励下下

查看全部评分

发表于 2009-8-9 22:01:19 | 显示全部楼层
  1. @echo  off
  2. set /p a=请输入第一个数:
  3. set /p b=请输入第二个数:
  4. echo 交换前a的值是:%a%
  5. echo 交换前b的值是:%b%
  6. set c=%a%
  7. set a=%b%
  8. set b=%c%
  9. setlocal enabledelayedexpansion
  10. echo 交换后a的值是: %a%
  11. echo 交换后b的值是:%b%

  12. pause>nul
复制代码

评分

参与人数 1PB +1 收起 理由
wxcute + 1 提供了交互方式,鼓励下。

查看全部评分

发表于 2009-8-9 22:12:54 | 显示全部楼层
题目的意思没看懂……
发表于 2009-8-12 16:51:12 | 显示全部楼层

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

[ 本帖最后由 wayaoqiang 于 2009-8-17 21:06 编辑 ]
 楼主| 发表于 2009-8-15 21:42:50 | 显示全部楼层

回复 34楼 Lumiere 的帖子

测试一下其他回复的代码就能了解意思了。
发表于 2009-8-15 22:13:09 | 显示全部楼层
不用变量延迟 直接换就可以了....
发表于 2009-8-18 13:15:34 | 显示全部楼层
[code]
@echo off
set /p numa=a=
set /p numb=b=
cls
echo a=%numa% b=%numb%
pause
goto exchange

:exchange
cls
echo 交换后如下:
echo a=%numb% b=%numa%
pause
[code/]
发表于 2009-8-18 21:45:57 | 显示全部楼层

  1. @echo off

  2. set a=23
  3. set b=32

  4. set t=%a%
  5. set a=%b%
  6. set b=%t%

  7. echo a:%a%, b:%b%

  8. pause
复制代码

[ 本帖最后由 atsivsucks 于 2009-8-19 08:55 编辑 ]
发表于 2009-8-19 12:32:15 | 显示全部楼层
@echo off
set a=2
set b=3
echo 原来的值:a=%a% b=%b%

set b=%a% & set a=%b%
echo 交换后的值:a=%a% b=%b%

pause

这个测试可以。
发表于 2010-7-19 22:33:56 | 显示全部楼层
答:
  1. @echo off
  2. set a=2
  3. set b=3
  4. echo 替换前: a=%a% b=%b%
  5. set zs=%a%
  6. call set a=%%a:%a%=%b%%%
  7. call set b=%%a:%b%=%zs%%%
  8. echo 替换后: a=%a% b=%b%
  9. pause>nul
复制代码


====可以吧......
end;
发表于 2014-12-24 19:54:19 | 显示全部楼层
本帖最后由 慕夜蓝化 于 2014-12-24 19:56 编辑

在for语句中使用变量延迟可以很好的解决问题。
@echo off
set /a a=2,b=3
for /l %%i in (1 1 1) do (
    set b=%a%&set a=%b%
    call echo,%%a%% %%b%%
)
pause
不,只要是在复合语句中,都能达到题目的要求
@echo off
set /a a=2,b=3
set b=%a%&set a=%b%
echo,%a% %b%
pause
发表于 2015-1-3 11:01:43 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p a=请输入变量a的值:
  4. set /p b=请输入变量b的值:
  5. for /f "delims=# tokens=1-3 eol=" %%a in ('echo !b!#!a!') do (
  6. set a=%%a
  7. set b=%%b
  8. goto:end
  9. )
  10. :end
  11. echo a=!a!
  12. echo b=!b!
  13. pause>nul
复制代码
变量a和b中不能含有#号,其他都可以。
发表于 2015-1-7 18:56:03 | 显示全部楼层
  1. @echo off

  2. rem 交换前的赋值
  3. set a=%random%
  4. set b=%random%
  5. echo 交换前:a=%a%,b=%b%
  6. echo.

  7. rem 交换后的结果
  8. set temp=%a%
  9. set a=%b%
  10. set b=%temp%
  11. echo 交换后:a=%a%,b=%b%

  12. pause
复制代码
发表于 2015-2-25 15:43:26 | 显示全部楼层

  1. @echo off
  2. ::交换变量a,b的值
  3. set /p a=请输入a=
  4. set /p b=请输入b=
  5. set a=%b%&set b=%a%
  6. echo 交换数值后,a=%a%,b=%b%
  7. pause
复制代码
发表于 2015-3-5 10:37:27 | 显示全部楼层
@echo off
set /p x=请输入a的值
set /p y=请输入b的值
echo 您输入的a的信息是%x%
echo 您输入的b的信息是%y%
echo 开始转换
set a=%y%
set b=%x%
echo 转换之后a的信息是%a%
echo 转换之后b的信息是%b%
pause

简化的
@echo off
set /p x=请输入a的值
set /p y=请输入y的值
echo 您输入的a的值是%x%
echo 您输入的b的值是%y%
echo 转换之后您输入的a的值是%y%
echo 转换之后您输入的b的值是%x%
pause
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 20:41 , Processed in 0.026566 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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