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

回复 12楼 的帖子

我重新看了一下,目标是:
元素 存在.1 .2 .3 中    并且变量n记录了个数。

然后 获得这三个元素的所有组合,作为随机的标题
对于指定目录中的所有html文件,
给予一个随机的 <title> 对吗?

TOP

你好523

最后一段测试下来蛮不错的!
我假如用来将 指定文件夹:
C:\Documents and Settings\Administrator\桌面\新建文件夹

里面所有html 里面的<title>原有标题</title>

替换掉,如何写入呢?
即下列代码 ,指定 文件夹,指定文件格式

最好是这样的格式去定义:

set ".1=a"
set ".2=b"
set ".3=c"
set n=3

会比较方便! 谢谢 ~
  1. cd /d "C:\Documents and Settings\Administrator\桌面\新建文件夹"
  2. for /f "delims=" %%a in ('dir /a-d/b *.html') do (
复制代码


谢谢523 ~
期待最全bat ~

[ 本帖最后由 fanfande 于 2010-7-5 22:55 编辑 ]

TOP

按照LZ的情况,字母不多,N层for最方便,速度也快, 组合这个东西
就是每个元素存在与不存在的情况,分别组合起来的结果。
依然根据要求,中间加了判断,若结果是一个字符的就不显示了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in ("a" "") do (
  4. for %%b in ("b" "") do (
  5.   for %%c in ("c" "") do (
  6.      set str=%%~a%%~b%%~c
  7.      if not "!str!"=="" (
  8.        if not "!str:~1!"=="" (
  9.            echo ^<title^>!str!^</title^>
  10.        )
  11.      )
  12.   )
  13. )
  14. )
  15. pause
复制代码

TOP

那个时候做组合,绕弯路的
根据楼主的情况,组合中只有一位字母的不进行显示。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call :func "abc" "" 0
  4. pause &exit
  5. :func
  6. set tmpstr=%~2
  7. if not "!tmpstr!"=="" (
  8.   if not "!tmpstr:~1!"=="" (echo ^<title^>!tmpstr!^<\title^>)
  9. )
  10. if %1=="" (goto :eof)
  11. setlocal
  12.   set strnow=%~1
  13.   set /a lp=0,lpb=lp+1
  14.   :lp
  15.     call :func "!strnow:~%lpb%!" "%~2!strnow:~%lp%,1!"
  16.   if not "!strnow:~%lpb%!"=="" (
  17.     set /a lp+=1,lpb=lp+1
  18.     goto :lp
  19.   )
  20. endlocal
复制代码

[ 本帖最后由 523066680 于 2010-7-5 11:05 编辑 ]

TOP

回复 8楼 的帖子

=。= 上班ing ..偷偷折腾。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call :func "abc" ""
  4. pause &exit
  5. :func
  6. setlocal
  7. set tmpstr=%~2
  8. if %1=="" (
  9.    if not %2=="" (
  10.       if not "!tmpstr:~1!"=="" (echo ^<title^>!tmpstr!^</title^>)
  11.    )
  12.    goto :eof
  13. )
  14. set strnow=%~1
  15.    call :func "%strnow:~1%" "%~2%strnow:~0,1%"
  16.    call :func "%strnow:~1%" "%~2"
  17. endlocal
复制代码

TOP

大伙上班了吗?繁忙的一个礼拜又开始了 ~

TOP

哎,很多东西要学啊,都是一知半解 ,

感觉bat 和 正则表达式 都是非常 nb的东西 !

哈哈,发感慨了,期待 答案 !谢谢 ~~

TOP

最好生成后是替换掉原来
<title>替换前</title>

TOP

你好,版主,不好意思我确实一开始 写错了,多了个bc,对不起哦.让大家理解错了!

我第一段的意思是
a
b
c
这样随机取a  b  c  放置title之间

当前需求是abc 的排列组合放置title之间

比如
<title>abc</title>
<title>ab</title>
<title>ac</title>
<title>bc</title>

麻烦帮我整合一下bat,就是把
  1. set "prefix=<title>"
  2. set "suffix=</title>"
  3. cd /d "C:\Documents and Settings\Administrator\桌面\新建文件夹"
  4. for /f "delims=" %%a in ('dir /a-d/b *.html') do (
  5.   set file=%%a
  6.   setlocal enabledelayedexpansion
  7.   set /a n=!random!%%n+1
  8.   (
  9.     for %%a in (!n!) do echo;!prefix!!.%%a!!suffix!
  10.     more "!file!"
  11.   ) > "%temp%\~tmp"
  12.   move "%temp%\~tmp" "!file!"
  13.   endlocal
  14. )
  15. pause
复制代码
结合起来,谢谢!

TOP

回复 3楼 的帖子

看你一楼的结果看晕了…… 为什么是两个bc....

组合
  1. @echo off
  2. call :func "abc" ""
  3. pause &exit
  4. :func
  5. setlocal
  6. if %1=="" (
  7.     if not %2=="" (echo %2)
  8.     goto :eof
  9. )
  10. set strnow=%~1
  11.    call :func "%strnow:~1%" "%~2%strnow:~0,1%"
  12.    call :func "%strnow:~1%" "%~2"
  13. endlocal
复制代码

TOP

你好,超级版主,还漏掉结果是
ab
ac
bc
这样的3个结果,

可以帮我和上面的我原始的部分结合起来吗,谢谢

TOP

楼主是想要这样吗?

  1. @echo off
  2. for %%a in (a b c) do (
  3.     for %%b in (a b c) do (
  4.         for %%c in (a b c) do (
  5.             if %%a neq %%b if %%a neq %%c if %%b neq %%c echo %%a%%b%%c
  6.         )
  7.     )
  8. )
  9. pause>nul
复制代码
***共同提高***

TOP

返回列表