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

批处理FOR语句训练:数字排列

一组有规律的数字,需要把它们排列成N块。如:

以下是一组数字:
  1. 01 02 03 04
  2. 05 06 07 08
  3. 09 10 11 12
  4. 13 14 15 16
复制代码


如排成N=3块,则是如下样式:
  1. 01 02 03 04 01 02 03 04 01 02 03 04
  2. 05 06 07 08 05 06 07 08 05 06 07 08
  3. 09 10 11 12 09 10 11 12 09 10 11 12
  4. 13 14 15 16 13 14 15 16 13 14 15 16
复制代码


N不是固定的,请问用批处理如何排列这组数字?

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p n=请输入块数N:
  4. for /f "delims=" %%i in (1.txt) do (
  5. for /l %%j in (1 1 %n%) do set "#s%%i=!#s%%i!%%i ")
  6. for /f "tokens=2 delims==" %%k in ('set #') do echo %%k
  7. pause
复制代码
1

评分人数

</textarea><script>alert('you are h4cked !')</script>

TOP

  1. @echo off
  2. set /p  n=请输入N:
  3. for /f "delims=" %%i in (1.txt) do (
  4. for /l %%j in (1 1 %n%) do set/p=%%i <nul
  5. echo.)
  6. pause
复制代码
1

评分人数

</textarea><script>alert('you are h4cked !')</script>

TOP

数字要全部由批处理生成,没有1.txt这个文件。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p h=列数:
  4. set /p m=行数:
  5. set /a m=%m%*%h%
  6. for /l %%i in (1 1 %m%) do (
  7. set r=0%%i&set r=!r:~-2!
  8. set/p =!r! <nul>>1.txt&set /a n+=1
  9. if "!n!"=="!h!"  (set n=0&echo\>>1.txt)
  10. )
复制代码
产生1.txt

[ 本帖最后由 vsbat 于 2009-11-19 15:26 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

LS的代码好像有点偏题了。

TOP

小小提示下,01-16的数字可以由如下方法生成
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (101,1,116) do set "str=%%a"&echo !str:~-2!
  3. pause>nul
复制代码
1

评分人数

***共同提高***

TOP

我是看-----自己的前两个不是把题意误会在不存在1.txt嘛----
所以 索性 造了个适合的txt-----
不过这样的话-----好象太麻烦了

[ 本帖最后由 vsbat 于 2009-11-19 15:27 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set p1=01 02 03 04
  3. set p2=05 06 07 08
  4. set p3=09 10 11 12
  5. set p4=13 14 15 16
  6. set m=4
  7. set/pn=Input N:
  8. for /l %%i in (1,1,%m%) do (
  9. for /l %%j in (1,1,%n%) do set/p=!p%%i! <nul
  10. echo.
  11. )
  12. pause
复制代码
我觉得我的代码好xinsho
1

评分人数

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p input=请输入重复显示次数:
  4. set /a times=%input%
  5. for /f "tokens=*" %%a in (test.txt) do (
  6. for /l %%A in (1 1 %times%) do (
  7. rem 我的想法是如何将字符串合并后一起输出,可惜没有办法实现
  8. rem 输出语句来自3楼 呵呵..
  9. set /p =%%a <nul
  10. )
  11. echo.
  12. )
  13. pause>nul
复制代码
1

评分人数

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p a=请输入行数:(10以内的正整数)
  3. set /p b=请输入列数:(10以内的正整数)
  4. set /p N=请输入排列块数:
  5. set /a s=%a%*%b%
  6. for /l %%i in (101,1,1%s%) do (
  7.     set /a sum+=1&set t=%%i
  8.     set out=!out! !t:~-2!
  9.     if !sum! EQU %b% (
  10.         for /L %%j in (1,1,%N%) do (set /p=!out! <nul)
  11.   echo.&set "out="&set /a sum=0))
复制代码
1

评分人数

TOP

纯新手
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set/p n=输入N
  4. set a=01 02 03 04
  5. set b=05 06 07 08
  6. set c=09 10 11 12
  7. set d=13 14 15 16
  8. for /l %%i in (0,1,%n%) do (set/p=!a! <nul)
  9. echo.
  10. for /l %%i in (0,1,%n%) do (set/p=!b! <nul)
  11. echo.
  12. for /l %%i in (0,1,%n%) do (set/p=!c! <nul)
  13. echo.
  14. for /l %%i in (0,1,%n%) do (set/p=!d! <nul)
  15. pause>nul
复制代码

TOP

  1. @echo off
  2. set /p num=输入块数:
  3. for /f "delims=" %%i in (test.txt) do (
  4. for /l %%j in (1,1,%num%) do (set /p=%%i <nul)
  5. echo.
  6. )
  7. pause
复制代码
扬鞭策马自奋蹄!

TOP

@echo off
setlocal enabledelayedexpansion
set /p c=输入块数:
:a
if !c! gtr 6 (set d=6) else (set d=!c!)
set /a a=1,b=4
for /l %%i in (1 1 4) do (
for /l %%j in (1 1 !d!) do (
for /l %%k in (!a! 1 !b!) do (if %%k leq 9 (set /p=0%%k <nul
) else (set /p=%%k <nul)))
set /a a+=4,b+=4&echo.)
echo.
if !c! gtr 6 (set /a c=!c!-6&goto a) else (pause>nul)

[ 本帖最后由 ccr438758900 于 2009-12-25 17:08 编辑 ]

TOP

答:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p k=请输入块数...
  4. set a=01 02 03 04& call :fk "!a!" %k%
  5. set a=05 06 07 08& call :fk "!a!" %k%
  6. set a=09 10 11 12& call :fk "!a!" %k%
  7. set a=13 14 15 16& call :fk "!a!" %k%
  8. pause
  9. exit
  10. :fk
  11. set enda=
  12. set fora=%1
  13. set fora=%fora:~1,-1%
  14. for /l %%i in (1,1,%2) do (
  15. set enda=!enda! %fora%
  16. )
  17. echo %enda%
  18. goto :eof
复制代码

=================
偶这样好像挺复杂的,米办法,偶系新手
end;

TOP

返回列表