返回列表 发帖
我来了

请问 为啥您不用
set ".1=a"
set ".2=b"
set ".3=c"
set n=3COPY
这样定义呢?

我运行下来出现2个bug

①当a b  c 改成中文时不执行

②替换指定的文件,他将文件全部删除了,而不是单单替换的原来的<title></title> 之间的内容!

版主可以自己测试下,不甚感激啊~
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

回复 16楼 的帖子

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

我的主要是针对字符串的。 在调用函数的那句 call  :func "你是谁" ""  (测试中文额。。。)
如果你一定要我 .1 .2 .3 那么我必须另写一段代码, 判断n=3 然后将.1.2.3 结合起来然后
调用。这对我的代码路线来说就是一个弯路呐。
所以我决定不写这个部分了,而且楼主自己也有能力自己改上的。

文件操作部分按照你的意思,
现在我直接复制你的代码,直接在上面修改了。

组合的代码也改了,速度是慢些,不过调用一次关系不大。
@echo off
setlocal enabledelayedexpansion
set /a strn=0
call :func "你是谁" ""
echo 筛选出的组合个数%strn%
::开始文件操作
cd /d "C:\Documents and Settings\Administrator\桌面\新建文件夹"
for /f "delims=" %%a in ('dir /a-d/b *.html') do (
  set file=%%a
  setlocal enabledelayedexpansion
  set /a n=!random!%%strn+1
  for %%x in (!n!) do echo; !str_%%x! - %%a
  (
    for %%x in (!n!) do echo;!str_%%a!
    more "!file!"
  )> "%temp%\~tmp"
  move "%temp%\~tmp" "!file!"
  endlocal
)
pause &exit
:func
set tmpstr=%~2
if %1=="" (
   if not %2=="" (
      if not "!tmpstr:~1!"=="" (
           set /a strn+=1
           echo 筛选的组合 !tmpstr!
           set "str_!strn!=^<title^>!tmpstr!^</title^>"
      )
   )
   goto :eof
)
set strnow=%~1
call :func "%strnow:~1%" "%~2%strnow:~0,1%"
set strnow=%~1
call :func "%strnow:~1%" "%~2"
goto :eofCOPY




恩我交代一下:
set /a strn=0
call :func "元素" ""
调用 func函数, 第二参数为空。
调用之后,函数会把组合的结果  储存到 str_1 ,str_2 , str_3...这样的变量中
最后 strn会等于组合结果的个数。(显然是筛选过的,只有一个字符的组合去掉)

然后就可以自己改了吧。

[ 本帖最后由 523066680 于 2010-7-7 17:43 编辑 ]
[url=][/url]

TOP

523066680 你好又要麻烦你了,前2天出差了! 事情是这样的,也许是我的描述不能让大家理解清楚:

原始状态是:

①一个文件夹里面一堆html文件,html文件有自己的<title>这里是原有的标题</title>

②需求一个bat执行,先设定几个中文标题,这里我打个比方,比如:  搜狐网  新浪网 腾讯网 中华网

③让bat随机组合这些中文标题,使之结果形如:
搜狐网新浪网
搜狐网腾讯网
搜狐网中华网
新浪网腾讯网
新浪网中华网
腾讯网中华网
.....

④将这些组合的结果替换该文件夹里面的所有html的原来的  <title>这里是需要替换的文字</title>
使得这些html的标题变成

<title>搜狐网新浪网</title>
<title>搜狐网腾讯网</title>
<title>搜狐网中华网</title>
<title>新浪网腾讯网</title>
<title>新浪网中华网</title>
<title>腾讯网中华网</title>


万分谢谢,不好意思,出差了,没来收帖子!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

我了个去,赶紧闪…… 我什么也不知道我什么也不知道……


哦 ,我还是说一下,你可以用 a代表  腾讯网    b代表中华网  c代表搜狐网

然后 abc排了以后,你把  a b c从字符的角度分别替换成他们对应的网,就可以了吧...

最后重申:我什么也不知道我什么也不知道……
[url=][/url]

TOP

哥,帮我出个完整的吧!
我工作中经常碰到这样的事情,

按照18楼的思路,不甚感激,甚至酬谢!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

=。=
@echo off
setlocal enabledelayedexpansion
set /a strn=0
set item_a=搜狐网
set item_b=新浪网
set item_c=腾讯网
set item_d=中华网
::现在调用函数,组合abcd字符,一个字母的掠过
call :func "abcd" ""
echo 筛选出的组合个数%strn%
::开始文件操作
cd /d "C:\Documents and Settings\Administrator\桌面\新建文件夹"
for /f "delims=" %%a in ('dir /a-d/b *.html') do (
  set file=%%a
  setlocal enabledelayedexpansion
  set /a n=!random!%%strn+1
  for %%x in (!n!) do (echo; !str_%%x! - %%a)
  (
    for %%y in (!n!) do echo;!str_%%y!
    type "!file!"
  )> "%temp%\~tmp"
  move "%temp%\~tmp" "!file!"
  endlocal
)
pause &exit
:func
set tmpstr=%~2
if %1=="" (
   if not %2=="" (
      if not "!tmpstr:~2!"=="" (
           set /a strn+=1
           set "tmpstr2="
           for %%i in (!tmpstr!) do (set tmpstr2=!tmpstr2!!item_%%i!)
           echo 筛选的组合 !tmpstr2!
           set "str_!strn!=^<title^>!tmpstr2!^</title^>"
      )
   )
   goto :eof
)
set strnow=%~1
call :func "%strnow:~1%" "%~2 %strnow:~0,1%"
set strnow=%~1
call :func "%strnow:~1%" "%~2"
goto :eofCOPY

[ 本帖最后由 523066680 于 2010-7-16 09:45 编辑 ]
[url=][/url]

TOP

原有的<title>   <title>
仍然存在呢!

当前测试下来是"如下结果"还是有点小bug:
<title>搜狐网中华网</title>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<title>个人主页</title>COPY
原则上来讲应该将
<title>个人主页</title>全部重写为
<title>搜狐网中华网</title>

也就是说一个html里面只有一个
<title>搜狐网中华网</title>了,把之前的
<title>个人主页</title>干掉了

其实说白了就是替换原有的

<title> 这里是将要被替换掉的文字 </title> 中间的文字

其中<title>  </title>不分大小写!


谢谢你小兄弟!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

不懂 html 文件,请问里面会有多个  <title>标题</title>   需要替换吗?
还有,你先设定几个中文标题,到底是多少个标题可以确定吗?
还有,是所有html文件都替换为统一标题,还是每个html文件随机替换为某个标题?

[ 本帖最后由 随风 于 2010-7-22 15:48 编辑 ]
技术问题请到论坛发帖求助!

TOP

回复随风 版主的几个问题:

①每个html文件只有一个<title>这里显示成标题</title>

②不是预先设置中文标题,当然也可以预先设置好标题,这里是随机已经设定的几个标题然后让他去替换原有的html里面的
<title>这里显示成标题</title>
至于多少个标题,完全对应于有几个html文件!

③最终结果不是每个html文件都统一标题,那就没有意义了,而是让每个html文件用随机产生的标题去替换,最终的目的就是尽可能的让每个html文件的标题不一样 ,谢谢 版主关心!

这2个问题也帮我处理下,不甚感激!
http://www.bathome.net/thread-8470-1-1.html
http://www.bathome.net/thread-8469-1-1.html
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

版主帮忙看一下,谢谢!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

请问, 帮主不在吗?
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

请问, 帮主不在吗?
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

返回列表