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

回复 18楼 的帖子

多谢,原来就是把空格替换为 !! 号啊,汗,想多了,反而把最基础的搞忘了。。。
这样也可以
  1. for /l %%a in (1,1,10) do (set "str=!str! ^!!ram:~%%a,1!^!")
  2. echo %str%
复制代码

[ 本帖最后由 随风 于 2009-4-23 08:01 编辑 ]
技术问题请到论坛发帖求助!

TOP

原帖由 随风 于 2009-4-23 06:20 发表
牛!
set out=%str: =!!% 好晦涩的写法 不仅使我想起了 %var:*"=set "var=%
它们是兄弟吧 ^_^
百思不得其解 set out=%str: =!!% 这句是如何替换的?能讲解下吗?
你好像少写了个空格 (set "str=!str! !ram:~%%a ...


多谢指出。没注意的确少了个空格,
set out=%str: =!!% 这句是把数字变为变量。
如1 2 3 4 5 6替换为!!1!!2!!3!!4!!5!! 前边已把定义过1~0 为变量为10个字串了,所以输出就是它们的随机组合

学批处理还不到一月,还有很多东西要向各位老大学习

TOP

回复 15楼 的帖子

  1. 牛!
  2. set out=%str: =!!% 好晦涩的写法 不仅使我想起了 %var:*"=set "var=%
  3. 它们是兄弟吧 ^_^
  4. 百思不得其解 set out=%str: =!!% 这句是如何替换的?能讲解下吗?
  5. 你好像少写了个空格 (set "str=!str! !ram:~%%a,1! ") 否则第一个字符是数字。
复制代码
.

[ 本帖最后由 随风 于 2009-4-23 06:51 编辑 ]
技术问题请到论坛发帖求助!

TOP

第一题
  1. @echo off&setlocal enabledelayedexpansion
  2. set "var1=abdefg kmli socsd pdxy nq ABDEFG KMLI SOCSD PDXY NQ"
  3. for %%a in (!var1!) do (
  4.    set /a n+=1,m=n-5
  5.    if !n! leq 5 (set .!n!=%%a) else set "#!m!=%%a"
  6. )
  7. for /l %%l in (1 1 10) do (
  8.    set "num="
  9.    for /l %%a in (1 1 10) do (
  10.       set /a w=!random!%%2,y=!random!%%5+1
  11.       for %%j in (!y!) do if !w! equ 0 (set str=!#%%j!) else set str=!.%%j!
  12.       set num=!num!!str!
  13.    )
  14.    echo !num!
  15. )
  16. pause
复制代码
第二题还真是费了翻脑筋。。
  1. @echo off&setlocal enabledelayedexpansion
  2. set zm=a b c d e f g h i j k l m n o p q r s t u v w x y z
  3. set "var1=ABDEFG"
  4. set "var2=bathome"
  5. set "max=!var1!"
  6. for %%a in (!zm!) do set max=!max:%%a= %%a !
  7. for %%a in (!max!) do set /a n+=1
  8. for /f "delims=" %%a in (a.txt) do (
  9.     set num2=%%a&set "jie="
  10.     set num=!num2:%var1%= %var1% !
  11.     for %%i in (!num!) do (
  12.        if /i not "%%i"=="%var1%" (set jie=!jie!%%i) else (
  13.           set "str=!num2:~0,%n%!"
  14.           if "!str!"=="%var1%" (set jie=!jie!%var2%) else set "jie=!jie!!str!"
  15.         )
  16.         set "num2=!num2:*%%i=!"
  17.      )     
  18.     echo !jie!
  19. )
  20. pause
复制代码

[ 本帖最后由 随风 于 2009-4-23 06:07 编辑 ]
1

评分人数

技术问题请到论坛发帖求助!

TOP

第一小题:
思路,用数字作为变量对应字串。将随机数转化为数字变量替换后输出随机字串。
  1. @echo off&setlocal enabledelayedexpansion
  2. set "var=abdefg ABDEFG kmli KMLI socsd SOCSD pdxy PDXY nq NQ"
  3. set n=0
  4. for %%i in (%var%) do (set !n!=%%i&set/a n+=1)
  5. :begin
  6. set ram=%random%%random%%random%&set "str="
  7. for /l %%a in (1,1,10) do (set "str=!str! !ram:~%%a,1! ")
  8. set out=%str: =!!%
  9. echo !out!>>b.txt
  10. set/a n-=1&if !n! gtr 0 (goto :begin)
  11. start b.txt
复制代码

[ 本帖最后由 inittab 于 2009-4-23 07:35 编辑 ]
1

评分人数

    • 随风: 奇妙的替换!PB + 11

TOP

第二题:

  1. @echo off&setlocal enabledelayedexpansion
  2. set replace=bathome
  3. for /f "delims=" %%a in (a.txt) do set n=0&set "st="&call :sub %%a
  4. pause>nul&goto :eof
  5. :sub
  6. set str0=%1&set str1=!str0:~%n%,6!
  7. if "!str1!"=="ABDEFG" (set st=!st!!replace!&set/a n+=6) else (set st=!st!!str0:~%n%,1!&set/a n+=1)
  8. if not "!str1!"=="" (goto sub)
  9. echo !st!
  10. goto :eof
复制代码
1

评分人数

TOP

回复 12楼 的帖子

论坛的默认设置版主应该可以操作包含自己的帖子在内的所有帖子吧,有些论坛不能这样做估计是后台做了客户化的设置。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

题外话,居然还能将自己的帖子设置成高亮,这是Bug吧。

TOP

楼上没想到直接set "var=abdefg ABDEFG kmli KMLI socsd SOCSD pdxy PDXY nq NQ"?
***共同提高***

TOP

请大家用纯批解决,虽然这个要求有点苛刻。。。
***共同提高***

TOP

回复 6楼 的帖子

原来是js啊...脸红.

TOP

回复 5楼 的帖子

那个...那个...嗯~~~好像不是VBS吧?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4楼 的帖子

调用vbs都行...vbs看起来比批处理明了直接多了.

我冲动了哈...

[ 本帖最后由 xxx 于 2009-4-22 21:38 编辑 ]

TOP

第二题
  1. @echo off
  2. mshta "javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('C:\\test\\b.txt',2,true).Write(fso.OpenTextFile('C:\\test\\a.txt').ReadAll().replace(/ABDEFG/g, 'bathome'));close()"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

多谢随风兄指出,已修正。
***共同提高***

TOP

返回列表