找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2928|回复: 13

[原创]:多层子目录内批量文件重命名的方法(利用4种小众语言)

[复制链接]
发表于 2007-2-20 22:28:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
利用4种小众语言进行批量多层子目录内文件重命名的方法
(华南理工大学建筑学院  qjchen)
问题的提出:
有一批txt文件(处于c:\a目录及在此内的多层子目录下),名字是1,2,3,4等比较乱的名字,现在希望用每个文本的第三行文字作为文件的新名字。
(这个要求当然可以是其他比较奇特的,修改一下即可)
为了方便测试,放了一个文件在这里,
http://qjchen.googlepages.com/test.ZIP
请解压到c:\a目录下即可。

现在希望用几种小众语言共同试一下,作为自我学习,也希望各位高手指正、精简及告诉多几种语言的写法。

问题的中心:目录的递归查找文件,文件读取,重命名

1a)纯粹的Lisp语言
既然是Lisp版,当然得先用Lisp语言,此处用的是Vlisp,其中借助了John F. Uhden, Cadlantic的程序。由于VLisp本身只提供了少量的目录函数,因此代码比较长。里面涉及了递归定义。

优点:lisp函数就如一个玩具一样,它用很少的语言定义出一栋高楼大厦,给人有很满足的感觉,当有足够多的Lisp函数构建出函数库,照样有强大的功能。当然,AutoLisp语言的强项在于图形方面,用它来作这些也有点难为它。

缺点:vlisp的速度相对其他语言似乎有些慢。

用法:在autocad2000以上加载之后,运行ren即可。


  1. ;;; ========================================================================
  2. ;;; Some of the following code are writen by CHEN QING JUN                 ;
  3. ;;; Civil engineering Department, South China University of Technology     ;
  4. ;;; Purpose: To get a file list of the currrent path                       ;
  5. ;;; The platform: Acad2000 and after                                       ;
  6. ;;; 2007.02.19                                                             ;
  7. ;;; [url]Http://chenqj.blogspot.com[/url]                                             ;
  8. ;;; [url]Http://autolisper.googlepages.com[/url]                                      ;
  9. ;;; ========================================================================
  10. (defun c:ren (/ direc directree x y direcfile)
  11.   (setq direc (getstring "\nc:/a:"))
  12.   (if (= direc "")
  13.     (setq direc "c:/a")
  14.   )
  15.   (setq directree (@Folders direc))
  16.   (foreach x directree
  17.     (setq direcfile (qj-directory-only-files x))
  18.     (foreach y direcfile
  19.       (if (= (vl-filename-extension y) ".txt")
  20.         (rename y)
  21.       )
  22.     )
  23.   )
  24. )
  25. (defun rename (y / path fh newname)
  26.   (setq path (vl-filename-directory y)
  27.         ext (vl-filename-extension y)
  28.   )
  29.   (setq fh (open y "r"))
  30.   (read-line fh)
  31.   (read-line fh)
  32.   (setq newname (strcat path "/" (read-line fh) ext))
  33.   (close fh)
  34.   (vl-file-rename y newname)
  35. )
  36. (defun qj-directory-only-files (path / lst res)
  37.   (setq lst (vl-directory-files path))
  38.   (setq lst (mapcar
  39.               '(lambda (x)
  40.                  (strcat path "/" x)
  41.                )
  42.               lst
  43.             )
  44.   )
  45.   (foreach x lst
  46.     (if (not (vl-file-directory-p x))
  47.       (setq res (append
  48.                   res
  49.                   (list x)
  50.                 )
  51.       )
  52.     )
  53.   )
  54.   res
  55. )
  56. ;;; ========================================================================
  57. ;; given the parent folder as a Path.                                      ;
  58. ;; Note that using a path of "" or "." or "\" will exclude                ;
  59. ;; the drive letter.  McNeel's DOSLIB has a DOS_FULLPATH function          ;
  60. ;; that can return such folders with drive designations.                   ;
  61. ;; (c) John F. Uhden, Cadlantic                                            ;
  62. ;;; ========================================================================
  63. (defun @Folders (Path / Folders @Dirs)
  64.   (defun @Dirs (Path / Dir Dirs)
  65.     (and
  66.       (= (type Path) 'STR)
  67.       (or
  68.         (/= (type DOS_FULLPATH) 'EXRXSUBR)
  69.         (setq Path (DOS_FULLPATH Path))
  70.       )
  71.       (if (wcmatch Path ",*/,*\")
  72.         (setq Dir Path)
  73.         (setq Dir (strcat Path "/"))
  74.       )
  75.       (setq Dirs (vl-directory-files Dir "*.*" -1))
  76.       (setq Folders (cons Path Folders))
  77.       (setq Dirs (vl-remove-if '(lambda (x)
  78.                                   (vl-position x '("." ".."))
  79.                                 ) Dirs
  80.                  )
  81.       )
  82.       (mapcar
  83.         '@Dirs
  84.         (mapcar
  85.           '(lambda (x)
  86.              (strcat Dir x)
  87.            )
  88.           Dirs
  89.         )
  90.       )
  91.     )
  92.   )
  93.   (@Dirs Path)
  94.   (reverse Folders)
  95. )


1b)利用doslib程序库
DOSLib, 是一个免费的AutoLISP/Visual Lisp 程序库。它为Autocad提供了各种可供调用的windows操作函数 . 它是用Objectarx编写的AutoCAD应用程序。 DOSLib 通过各种函数扩展了AutoLISP和Visual LISP的编程功能。部分翻译可以见这里:
http://chenqj.blogspot.com/2007/01/doslib-75_27.html

优点:比Lisp的代码要短不少。

缺点:需外挂ARX函数库,对不同版本的arx需要不一样。

用法:对相应的cad版本,加载相应的doslib


  1. ;;; ========================================================================
  2. ;;; Some of the following code are writen by CHEN QING JUN                 ;
  3. ;;; Civil engineering Department, South China University of Technology     ;
  4. ;;; Purpose: To rename a batch of txt files into new name according to the ;
  5. ;;;          third line of the text  (Use DOSLIB)                          ;
  6. ;;; The platform: Acad2000 and after                                       ;
  7. ;;; 2007.02.19                                                             ;
  8. ;;; [url]Http://chenqj.blogspot.com[/url]                                             ;
  9. ;;; [url]Http://autolisper.googlepages.com[/url]                                      ;
  10. ;;; ========================================================================
  11. (defun c:ren (/ direc directree x y direcfile fh newname)
  12.   (setq direc (getstring "\nc:/a:"))
  13.   (if (= direc "")
  14.     (setq direc "c:/a")
  15.   )
  16.   (setq directree (dos_dirtree direc))
  17.   (foreach x directree
  18.     (dos_chdir x)
  19.     (setq direcfile (dos_dir))
  20.     (foreach y direcfile
  21.       (if (= (vl-filename-extension y) ".txt")
  22.               (progn
  23.               (setq fh (open y "r"))
  24.           (read-line fh)
  25.           (read-line fh)
  26.           (setq newname (strcat (read-line fh) ".txt"))
  27.           (close fh)
  28.         (dos_rename y newname)
  29.         )
  30.       )
  31.     )
  32.   )
  33. )


2)Python语言
python语言是一种比较新的脚本语言,虽然比较小众,但是也得到越来越多人的应用,个人只学了很少的一部分,感觉其层次清楚,函数库也比较大,语言相对比较灵活,和lisp有点类似,比如list,def,lambda等等都很熟悉。我用的python版本是activepython: http://www.activestate.com/,下面的函数walk函数递归调用子程序中的各层文件是参考了http://www.chinaunix.net/jh/55/574467.html的函数的。

优点:函数库比较多,语言也算比较清晰
缺点:得安装python解释器。

用法:将代码存为.py文件,在activepython里面打开这个文件,按ctrl+R运行即可
注意:python的类似progn之类的操作,是用Tab缩进来描述的,每个缩进代表了一个层次,假如下述代码无法工作的话,请把相应的空格改成Tab,两层的为两个Tab



  1. import os
  2. filedir = "c:\\a"
  3. filenamelist=[]
  4. def visit(arg, dirname, names, flist = filenamelist):
  5.     flist += [dirname + "\" + file for file in names]
  6. os.path.walk(filedir, visit, 0)
  7. for y in filenamelist:
  8.     if os.path.isfile(y):
  9.       f=open(y,'r')
  10.       f.seek(0)
  11.       allline=f.readlines()
  12.       thirdline=allline[2]
  13.       lst=os.path.split(y)
  14.       os.chdir(lst[0])
  15.       f.close()
  16.       os.rename(lst[1] , thirdline.replace("\n", " ")+'.txt')
复制代码


3)cmd脚本语言
(这个是修改精品和drl的hitme大侠的,for的用法比较奇怪也非常强大)
cmd脚本其实就是批处理语言,在win2000之后得到很大的增强,有许多不可思议的操作都用短短几行就得到了解决,范例可见https://www.dream4ever.org/showthread.php?t=75887
第八楼的帖子,相应还有su99和hitme等高手之作

优点:完全只靠系统本身的批处理语言就解决了问题。
缺点:代码的可读性一般,for的用法非常复制,但也非常强大,好好的学习应该可以解决很复杂的问题(听说黑客整天干这种事,咱可没那种能力和野心:)

用法:将代码存为1.bat文件,放到c:\a目录下,双击运行或者cmd命令行下键入1.bat即可


  1. @echo off
  2. setlocal  ENABLEDELAYEDEXPANSION
  3. for /f "delims=" %%a in ('dir /s/b *.txt') do (
  4.                         for /f "skip=1 tokens=1,2 delims=:" %%i in ('findstr /n "." "%%a"') do (
  5.                                 set n=%%j
  6.                                 if "%%i"=="3" (
  7.                                 ren "%%~da%%~pa%%~nxa" "!n:~0,10!.txt" 2>nul)
  8.                         )
  9. )       
  10. endlocal
复制代码



4)用Autohotkey语言
Autohotkey是一个系统键盘及鼠标模拟程序,具有强大的自定义功能,完全可以将之作为一个Autocad热键处理程序来运行(与Autohook各有所长),外国网站是在这里
http://www.autohotkey.com/wiki/i ... Reading_.26_Parsing
国内也有好些此中高手
http://www.blogcn.com/user48/yonken/index.html
要先安装一个叫autohotkey的软件,下载地址:http://www.autohotkey.com/
它的作用是这样的,
比如把下面这三句代码,存为一个叫abc.ahk (abc可以任意取),

  1. F1::^c
  2. F2::^v
  3. Tab::^l
复制代码

然后,双击这个abc.ahk,那么它将会认为F1是复制,F2是粘贴,在Autocad中,它会认为Tab键就是和F8键一样的正交键。(你可以用它实现很强大的功能吧:0,不过它和autohook还是不一样的,autohook对于定义单键,比如一个按键的,比如a非常有用,而autohotkey还不行)

本来我想编一个ahk文件来实现用autocad的lisp编辑器批量的autolisp程序的代码格式化的,差一点还没有成功,就先编一个这个来测试一下其目录递归功能,发现也很强大。

优点:语言简洁,更有其他强大的功能
缺点:调试不大方便

用法,将这段代码存为1.ahk文件,双击之则完成


  1. FileList =  ; Initialize to be blank.
  2. Loop, c:\a\*.*,0,1
  3.         FileList = %FileList%%A_LoopFileFullPath%`n
  4. Loop, parse, FileList, `n
  5. {
  6.         FileReadLine, line, %A_LoopField%, 3
  7.         B= %A_LoopField%
  8.         SplitPath, B, name, path
  9.         NewName = %path%\%line%.txt
  10.         FileMove, %A_LoopField%, %NewName%
  11. }
复制代码


其实高手只要精通一种语言就可以为所欲为了,本人只是得处理非常多的文本文件,因此乱七八糟的学了一点皮毛,特别是语言不熟悉时程序也经常拖沓不已,各位见笑了。

总体的感觉,Lisp最顺手,编的最快。Doslib也很熟眼。Python之前编过一些,改改就成功,但是原来的listdir不能用了之后得google,cmd学的好苦,但感觉到有一片新天地,而autohotkey是为了后面的一些批量导出tecplot图形而学习的。除了lisp,好像速度都比较快。

假如有各种其他的代码,也请不吝指教,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-2-21 09:17:51 | 显示全部楼层
很实用的函数,提点小建议,
qj-directory-only-files 可以做如下简化
[php]
(defun qj-directory-only-files (path)
  (MAPCAR (FUNCTION (LAMBDA (x) (STRCAT path "/" x)))
          (VL-DIRECTORY-FILES path nil 1)
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-21 13:11:15 | 显示全部楼层
谢谢fools兄,我的mapcar和lambda一直用的比较烂,谢谢fools兄精简:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-2-21 16:28:13 | 显示全部楼层
hehe ,我只是改了你的VL-DIRECTORY-FILES函数,当最后一个参数取值为1时,只返回文件名,无目录名,和mapcar,lambda无关。不过,如果在循环中使用lambda时,一定要用(function (lambda ...,不要使用'(lambda...,纯lisp时察觉不出两者的区别,编译成vlx或fas速度差别很大。

点评

感谢经验分享,一个程序,编译后比编译前速度慢很多,一直没找到问题,看到这个帖子,改了一下,确实是这个问题。感谢,解决了大问题了。  详情 回复 发表于 2013-11-28 20:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-21 17:19:13 | 显示全部楼层
snoopychen 真是博学多才啊.佩服
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-22 09:41:47 | 显示全部楼层
刀兄过誉了。我的编程水平比较低,杂而不精,远不如刀兄及其他论坛高手之钻研深刻,跟你们学习了许多,非常感谢。

今天我发现了一个更容易的方法,利用我最最最喜欢的total commander,更加简单的完成了这个问题,由于TC和Lisp无关,我就放在这边算数了。
http://chenqj.blogspot.com/2007/02/totalcmdn.html

[iframe h=500 w=600]http://chenqj.blogspot.com/2007/02/totalcmdn.html[/iframe]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-22 11:29:46 | 显示全部楼层
最初由 fools 发布
[B]hehe ,我只是改了你的VL-DIRECTORY-FILES函数,当最后一个参数取值为1时,只返回文件名,无目录名,和mapcar,lambda无关。不过,如果在循环中使用lambda时,一定要用(function (lambda ...,不要使用'(lambda...,纯lisp?.. [/B]


关于使用function和'的区别,我一直很迷惑,今天看到fools兄的这种说法,特地做了以下的测试程序,编译后并没有发现速度上的差异,是什么原因?
[PHP]
(defun w2 (pts)
   (repeat 1000 (mapcar (function (lambda (x) (trans x 0 1))) pts))
  )
(defun w1 (pts)
   (repeat 1000 (mapcar '(lambda (x) (trans x 0 1)) pts))
  )
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-2-22 16:48:14 | 显示全部楼层

To 小菜:

你可以看一下acad提供的function函数帮助.
纯lisp看不出两者的区别,将下面的代码编译成vlx或fas,或者直接加载附件中的vlx就可以看出function和quote的区别.用function函数,无论是否编译速度一样,而用quote,编译后非常慢.
[php]
(DEFUN c:tmp (/ T0 T1 T2)
  (SETQ t0 (* 86400 (GETVAR "tdusrtimer")))
  (REPEAT 30000 (MAPCAR '(LAMBDA (x) (* x x)) '(1 2 3)))
  (SETQ t1 (* 86400 (GETVAR "tdusrtimer")))
  (REPEAT 30000
    (MAPCAR (FUNCTION (LAMBDA (x) (* x x))) '(1 2 3))
  )
  (SETQ t2 (* 86400 (GETVAR "tdusrtimer")))
  (princ (strcat "\n<Function> is " (rtos (- t2 t1) 2 3) " second"))
  (princ (strcat "\n<Quote> is " (rtos (- t1 t0) 2 3) " second"))
  (princ)
)
[/php]

我机器上执行的结果是
[php]
<Function> is 1.797 second
<Quote> is 11.39 second
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-23 12:34:04 | 显示全部楼层

Re: To 小菜:

最初由 fools 发布
[B]你可以看一下acad提供的function函数帮助.
纯lisp看不出两者的区别,将下面的代码编译成vlx或fas,或者直接加载附件中的vlx就可以看出function和quote的区别.用function函数,无论是否编译速度一样,而用quote,编译后非... [/B]


以前虽然知道,但是没想到差这么多.

  1. ;;未编译
  2. 命令: tmp

  3. <Function> is 1.781 second
  4. <Quote> is 3.500 second

  5. 命令:
  6. 命令: TMP

  7. <Function> is 1.687 second
  8. <Quote> is 1.735 second

  9. 命令:
  10. 命令: TMP

  11. <Function> is 1.625 second
  12. <Quote> is 1.484 second

  13. 命令:
  14. 命令: (LOAD "D:/lxx.lsp编译/tmp.fas")
  15. C:TMP C:TMP

  16. 命令: tmp

  17. <Function> is 4.891 second
  18. <Quote> is 13.140 second

  19. 命令:
  20. 命令: TMP


  21. <Function> is 29.922 second
  22. <Quote> is 15.297 second

  23. 命令:
  24. 命令: TMP


  25. <Function> is 5.969 second
  26. <Quote> is 14.140 second

  27. 命令:
  28. 命令: TMP


  29. <Function> is 4.797 second
  30. <Quote> is 11.438 second

  31. 命令:
  32. 命令:
  33. 命令: (LOAD "D:/lxx.lsp编译/tmp.VLX")
  34. C:TMP nil

  35. 命令: TMP


  36. <Function> is 4.875 second
  37. <Quote> is 11.078 second

  38. 命令:
  39. 命令: TMP


  40. <Function> is 3.063 second
  41. <Quote> is 10.937 second

  42. 命令:


顺便提供一个小巧的多文本替换工具

[iframe h=600 w=100%]http://soft.yiiu.com/Software/catalog106/470.html[/iframe]

界面:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-23 14:40:07 | 显示全部楼层
我原先用benchmark测试的,可能加载有什么错误,导致看不出速度上的差别,看了fools的帖子,又试了一次,发现确实差别很大,多谢指点
使用function函数编译成vlx后有什么缺点么? ' 难道仅仅是看起来比较简短这么个优点?
看帮助文件里:Compiled lambda expressions that are quoted by function will contain debugging information when loaded into the Visual LISP IDE.这句有点不太明白
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-2-23 17:47:42 | 显示全部楼层
呵呵,越说越跑题了.
quote函数的作用不是短小好看那么简单,它是组成lisp的七个最基本函数之一,其他六个是atom,car,cdr,cons,eq,cond。虽然quote函数看上去有些奇怪,很难在其它语言中找到类似的概念,但正是这一特征构成了Lisp最为与众不同的特点——代码和数据使用相同的结构来表示,用quote来区分它们。
记不得从哪个cad版本开始引入的function函数,估计是有vlisp以后的事,与quote比起来属于是孙子辈的。为了保护lisp代码,vlisp对函数进行了特殊的照顾,用car,cdr,princ等已经看不到函数代码,严格来说,这已经违背了lisp的代码和数据使用相同结构的初衷。不清楚function具体做了哪些优化,因为纯lisp运行的往往比fas或vlx快。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-11-28 20:43:05 | 显示全部楼层
fools 发表于 2007-2-21 16:28
hehe ,我只是改了你的VL-DIRECTORY-FILES函数,当最后一个参数取值为1时,只返回文件名,无目录名,和mapcar,l ...

感谢经验分享,一个程序,编译后比编译前速度慢很多,一直没找到原因,看到这个帖子,改了一下,确实是这个问题。感谢,解决了大问题了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1345个

财富等级: 财源广进

发表于 2013-12-21 16:35:53 | 显示全部楼层
:)谢谢分享。楼主真博学.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 244个

财富等级: 日进斗金

发表于 2022-5-26 10:08:12 | 显示全部楼层
感谢楼主的分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 12:50 , Processed in 0.227933 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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