Board logo

标题: 正则更名工具rn.exe [打印本页]

作者: happy886rr    时间: 2016-11-3 23:38     标题: 正则更名工具rn.exe

本帖最后由 happy886rr 于 2016-11-4 09:56 编辑
RN.EXE [version 1.1]修复一个bug
__________________________________________________________________________________
正则表达式更名工具,支持指定目录,递归目录,测试更名。C语言编写,体积仅8KB,
比ren2更名快2倍的强劲性能。

__________________________________________________________________________________
位开关数传,一切都是如此迅捷。
void RE_Rename(
        const char* Org_Path, //工作目录
        char* RE_Match,       //要匹配的正则
        char* RE_Format,      //要更名的正则
        unsigned char FLAG    //位开关
)
__________________________________________________________________________________
使用:
rn -p [要更名的文件路径] [-f|-t|-fr|-tr] ["正则匹配表达式"] ["正则更名表达式"]
__________________________________________________________________________________
选项:
    -h    帮助信息
    -p    设置工作目录
    -f    执行更名,使用-fr将会递归子目录
    -t    测试更名,使用-tr将会递归子目录
__________________________________________________________________________________
示例:
     rn -f  "(.*)-(.*)(\.txt)" "\2\3"     //在当前目录,截取“-”后更名
     rn -t  "(.*)-(.*)(\.txt)" "\2\3"     //在当前目录,截取“-”后测试更名
     rn -fr "(.*)-(.*)(\.txt)" "\2\3"     //在当前目录递归子目录,截取“-”后更名
     rn -p "D:\test" -fr "(.*)-(.*)(\.txt)" "\2\3"
                                          //指定目录“D:\test”递归子目录... 更名
__________________________________________________________________________________
英译:

COPYRIGHT@2016~2018 BY HAPPY, VERSION 1.0
REGULAR RENAMING TOOLS
----------------------------------------------------------------------------------
rn -p [path] [-f|-t|-fr|-tr] ["match expression"] ["format expression"]
----------------------------------------------------------------------------------
   -h Show help information
   -p Working home directory
   -f Exec regular renaming, use -fr to recursive subdirectories
   -t Test regular renaming, use -tr to recursive subdirectories
----------------------------------------------------------------------------------
                                                                  03TK::11/03/2016

核心代码
  1. /*
  2. REGULAR RENAMING TOOLS, VERSION 1.0
  3. RN.EXE
  4. COPYRIGHT@2016~2018 BY HAPPY
  5. */
  6. #include      "rn.h"
  7. #include <stdbool.h>
  8. #include  <direct.h>
  9. #include      <io.h>
  10. //定义路径名最大长度(字节)
  11. #define  PATH_SIZE 1024
  12. //定义文件名最大长度(字节)
  13. #define FNAME_SIZE 1024
  14. //正则命名函数
  15. void RE_Rename(
  16. const char* Org_Path, //工作目录
  17. char* RE_Match,       //要匹配的正则
  18. char* RE_Format,      //要更名的正则
  19. unsigned char FLAG    //位开关
  20. )
  21. {
  22. int start, length;
  23. char Org_Name[FNAME_SIZE];
  24. char Cur_Path[ PATH_SIZE];
  25. char     path[ PATH_SIZE];
  26. //获取当前目录
  27. _getcwd(Cur_Path, PATH_SIZE);
  28. //设置工作目录
  29. _chdir(Org_Path);
  30. struct _finddata_t FileS;
  31. intptr_t handle=_findfirst("*",&FileS);
  32. bool M=(handle==-1)?true:false;
  33. while(!M){
  34. //装饰路径
  35. if(
  36. (Org_Path[1]!= ':') &&
  37. (Org_Path[0]!='\\')
  38. ){
  39. strcpy(path, Cur_Path);
  40. strcat(path, "\\");
  41. }
  42. if(strlen(Org_Path)>0){
  43. strcat(path, Org_Path);
  44. strcat(path, "\\");
  45. }
  46. //备份名称
  47.     strcpy(Org_Name, FileS.name);
  48.     //正则查找
  49.     if(RegexFind(Org_Name, RE_Match, &start, &length)==1){
  50.     //正则更名
  51. RegexReplace(FileS.name, RE_Match, RE_Format, &start, &length);
  52. //交互显示
  53. if(FLAG&1){
  54. const char* PathName=strcpy(path, Org_Name);
  55. if(rename(PathName, FileS.name)==0){
  56. printf("[Done]   %s --> %s\n", Org_Name, FileS.name);
  57. }else{
  58. printf("[Error]   %s --> %s\n", PathName, FileS.name);
  59. }
  60. }else{
  61. printf("[Show]   %s --> %s\n", Org_Name, FileS.name);
  62. }
  63. }
  64. M=(_findnext(handle, &FileS)!=0)?true:false;
  65. }
  66. _findclose(handle);
  67. //递归子目
  68. if(FLAG>>4){
  69. handle=_findfirst("*.*", &FileS);
  70. M=(handle==-1)?true:false;
  71. while(!M){
  72. if(FileS.attrib & _A_SUBDIR){
  73. if(
  74. (strcmp(FileS.name, ".")!=0) &&
  75. (strcmp(FileS.name,"..")!=0)
  76. ){
  77. //函数递归
  78. RE_Rename(FileS.name, RE_Match, RE_Format, FLAG);
  79. }
  80. }
  81. M=(_findnext(handle, &FileS)!=0);
  82. }
  83. _findclose(handle);
  84. }
  85. //还原目录、释放内存
  86.       _chdir(Cur_Path);
  87. free(Org_Name);
  88. free(Cur_Path);
  89. }
  90. //帮助信息
  91. void Help_Information(FILE* stream, int Exit_Code)
  92. {
  93. fputs(
  94. "COPYRIGHT@2016~2018 BY HAPPY, VERSION 1.0\n"
  95. "REGULAR RENAMING TOOLS\n"
  96. "-----------------------------------------------------------------------------\n"
  97. "rn -p [path] [-f|-t|-fr|-tr] [\"match expression\"] [\"format expression\"]\n"
  98. "-----------------------------------------------------------------------------\n"
  99. "   -h Show help information\n"
  100. "   -p Working home directory\n"
  101. "   -f Exec regular renaming, use -fr to recursive subdirectories\n"
  102. "   -t Test regular renaming, use -tr to recursive subdirectories\n"
  103. "-----------------------------------------------------------------------------\n"
  104. "                                                                        03TK\n"
  105. ,stream
  106. );
  107. exit(Exit_Code);
  108. }
  109. /*****MAIN主函数入口*****/
  110. int main(int argc, char ** argv)
  111. {
  112. int i=1;
  113. char* Work_Path;
  114. unsigned char FLAG;
  115. if(argc<4){Help_Information(stderr, 1);}
  116. if( (argv[i][0]=='-') && (argv[i][1]=='p') ){
  117. if( !access(argv[2], 0) ){
  118. Work_Path=argv[2];
  119. i+=2;
  120. }else{
  121. fputs("Error path\n", stderr);
  122. return 2;
  123. }
  124. }else{
  125. Work_Path="";
  126. }
  127. if(argv[i][0]=='-'){
  128. if(argv[i][2]== 'r'){
  129. FLAG=0x10;
  130. }else{
  131. FLAG=0x00;
  132. }
  133. switch (argv[i][1]){
  134. case 'f' : //执行改名
  135. FLAG|=0x01;
  136. break;
  137. case 't' : //示范改名
  138. FLAG&=0xF0;
  139. break;
  140. default :
  141. fputs("Error option\n", stderr);
  142. return 1;
  143. }
  144. //调用正则命名函数
  145. RE_Rename(Work_Path, argv[i+1], argv[i+2], FLAG);
  146. }else{
  147. Help_Information(stderr, 1);
  148. }
  149. return 0;
  150. }
复制代码
文件下载,base64码
  1. @echo off
  2. ::*********BASE64 过滤解码器*********
  3. certutil -decode "%~f0" rn.zip&pause&exit /b
  4. ::***********************************
  5. -----BEGIN BASE64-----
  6. UEsDBBQAAAAIAOxNZEm4UpP2BgMAAEMIAAAJAAAAcmVhZG0udHh0tVXdT9pQFH9ek/4PNzypoVQwWQxPQ4doVCDIPowYglg+MmlJe3EuMftfal22KA+wgQMRWASnc4siMDTL3Fe2bMs+TLbEJVOW9VIqLJtuLnAeTttzf/fc3zn3nFOLUaW/rAcjkxTLeRkaqFXq0dyzWCSfiO2PBdw4Zm+44NjjcvFL+FNkbz0ZO8wcxGdTz4Vg6eadUim2cCubXl4SgtHd+Hvp7far9SJC8UJ3YW+rGH6RiwjBR28S5eR+Z3+XEMSx8BpL0RqESX/UhBei2dV0aiZXzD7lhebQXy9H5jcS6bn4jhDMJ1Zza28jD7diyV2ADpxkvOPAordbKNrho1pw7IyToTkInB4H2wZMrNtudkCPEpBkfHb7G4oRQSqL4q5BB3SKi5KQZH7u/o2V19EsSlg9rIdhfQ6orMFQ9EewAM153TQ1XjkT9AzoDBJM4oxjrU1KS7yQ0eIYSwPCD0ZkThvZpR/Ld1MLo2CEcE0TcJpwseKDFb8ViC8KUKoFhWxCG2VTc6hu8ZufhUUcQ3khPEiH9krfcyubM1WbH+kH70qZ2iVV7C6kS5FcDnEUgihkMZ7kfOIlqtjtQh0UIi1XbxUKf4PaGy7iRaTuleXoAEtXWCtaVG2tBFItNhWcgq0KoLBpbB2KagkVn0TDqyGp5ZI7azwfIvjw4tfYYeagzhH8b0dyIupZsadwVsvZSfz8QHFea4MUBxUn+6/u+SchSXku8aGqdz5c46NSqYBEw95wwbHCTP4Duksc6zaZhy19hl7rOU27+ux1UXWCrmHQqzObh5Xgot4y1GcyovmNYxa94cKAziJOCqNusM9oAFaTaWAIx4iGy1G7+x3Q86cW96GBBqgpP0tx6AdTaXJXZXz9Ym0OOam9hzzMVeChJvzAS0tHi0dKi35wiWGveGk38DA+Cox7WcoJGfaatOoC+inKCVjKHZgQJymLRrqIVYIAR1XqCzKi0RkQf52TFOACY/J+L8VJHiCwiuVynAf4Fw9Ew+U0dX+ctHdY+7VatZps7yBRKf4EUEsDBBQAAAAIAENOZEnpwLF1PhwAAAAgAAAGAAAAcm4uZXhl7XlpUFNZ1+4JCUmAEIIyj0FAZgiDDAoSwqxB5kEZIwFBEkInJ6AyBQJCjBEcoHGWdu4WBZQZIQwCtigo3RhmVNqGThhEOmCj5GK331vve79bde+vW3Wr7lO11t7Pk2evs3aqzvmz/A6UAlAAAGCbIZEAQCPwD/DA/x6szUDrNqOBRzLP9RohxOd6IUnJDGwanXaITqJi40mpqTQQezABS2emYpNTsR7+wVgqjZxgKS8va/CtRoAnABAhUMB/TjPiv+pOAwpQOYiUI4DdJJjNSAMA/vlvD7wG/NPdV13qn74h3/r/G9XfzmwC+nfGfuOYb+u/ln+wWU8A/N9HaEAE7u9N2r81JPVvhn+uO73ps/6bYL/dX+u/+/D/+Gz+Jph/7vS3R+e/+fi2lk7WXx+uJy8jhazeejnkxJWNuTMMAPhJfdNhDwDbIYB57rpEEsr5jS1S40SvcT2R1mMc5mcuYC2GupzerJEx9Xl5wd2FB6dHtkGAXpgB0voVJ8Rgt0AyBptV3HaOvQYBjxXyQbSGZLBF8vDL+wWAI+B6BXJE0Z0w33OLcus5YGfGHpezyEfapS7SyljXiYVIF20480k8TMwBJ1r22x7+USNeeMGl3FzoKqBVv2Q2XuJ4WBWKFQrSr95vYRSgdLXmNPYEy/E5tpHqpR444yCd+CmcQ7h5QlMwUXOkFutFVZf/vUqbVw+D81qN/IMjmzPkAgwsAAweSNUXmUdzXcQ6Wmd6Pdcs4B6YxPWc+UoAb8CIw4egVFbgqwIRshFQIN+rxMhLtWWuLpCvYyy4ypTv0K8UCiu92X9Ng7qx66tPsJaVGlw8jhPodGPGZzLRTJ8PGgeYTfF3C+VLAYdLyT2r2ascDEpbxJ5ZQvSrn1S/+ti97WplZaMv3JlTLdPe3rWtgKOF1j+pUt4jL6eO2QVpKc29uDCEQxZAlIlqs8RS9z7yIu/RdlddKa7e1NS4fNZWw2jJGx64XSFNh/L68YBrdLLu+FRoM7Au164+rRTO482ufgkLzhNR5DEfcj97lSIV6j2VRjkog+LC9uXvizpOEfSVnqMGA3iFlN/iGvvUffVhcr2S5cQkb4563ezHUlYmZCdoVGS9TtsLdY4C9Tl2Bol7PnutihmKCFGiPy4K2F5wvGJif LGwcTdvPCJmdt2iXXOvm5mJp1JZtwaP39QRlXn0moIBsmiiS/zQWEnN2ed4Kc2Z3ieae3dm+ZfZxHLnwFSrx9R+8PIEHlYwlqkKodiLUwqv8y7fhS2Si6bejERt65ZG5HWbvxh3W4uMiY3uyuVE5f+y8tq+q3OcOVEa2Xo+s1XM9cMEtK+86gkqKJkZX9bMEh+7inpT0BW9S95jF3LxvJmxhj2XJ3f/hel5q/czSrekcLVvtO9st5tdR/YNZRehx8v7DdQLST7ND//wMAjBLZ9EkGfqwC4wJndgtd3+gTYGdPjcbhdY1+Rtua577+MtcFu7/VYoM8xQ4UGco9UDrQefolJEykX9sJf2mBcXnLgbvB333hhGRfxa166djfH3r69jH6qDZplJiYRqjUU3ShZDm5zuwbSvsIea8+FRMu+yb2WWZgYceuRfJsyo3d3KS19sxDz5LezPK3WsuxjPcRRuGzHPe7pmB3sdRlQo68zLlaNFouAIfuHg3aeHvWCsxfrFDUcLMKHlRNCE0inWTgu1ajPWMSl6T1j8R4W2IMhGn1V7YkderOvwOREIxnJ3ODfL32xZxRqMs3vw89XcIDudPOxPvIS1BycHpmn3WUcgacyyVu4+5I5crRz1LOYRbgzyUjW8wGDsTUnhku/gFa7HKfvBkPfbnLtOwU45uPn3xQoPPQ6cQkGEL+hnGl/ZxSv4tJzxiOogVKt0Et1nPS6cfu9Q2dci1xYFXiSTk/ke56WuSNDN8ImBDhJniBuI5OFRY9Xt3U6dWcUaEjdkZIkcxvDgXserViMSSYOcPx4yEijFns7tmEZCBkFZlhMCVORtT+b0wCDPz0QOmLhg08Ys+xSFotxgrk9V9npDRRe1A1QutnGD9rhxobzHY6nnOO5qfbvY7hgoMrFqLK31Ks8HJQ9H3nByHHt+fJUJE+qTqIjxj6xd6cqfiyQSzrLJaHGwFGewYw1pkFvsDgngjJosC+fGYyjkq+1ZM6A01yGDtg0OQtMi2Z3RwtOl7cPvxeiVyqPMNU622Yf0pLXX3GCktk1gGM8LmjPy4oTReNQD5FoxvMdruIk61+vF3c11shf1a/oaUDBTNOwHzlnD23eCQkhLI3qNcQZPu9otG4ccjL/31LwA43gOvS+3J5+Di+sQnffEsdO5MoN3IEzDQgmoZ7zEOhp1CUzqtXyxxB9viCoWsodVIwWKZ3rUZMyn4FltS5pwuwQP1noUU20RzfoU1b40/v6w9PakBBev4mfFuqPTKiJvjnhAH+7FLr7/ZFjwMvFXu+1EJ/ZSywRYqyf8LciLPYs78hBob+afyZS+9mNeMtiT/0kzCptnHAm2OQ2mN+dusFfemQx1QqZM9c1ZuRKAeaVA8+pczdTNi7o9CKrWXjtz3XBCmLkj7J3qdq3CMdDdVD/qh0dl2vmDK35Fhb8JmnNHDMo8gj+FshwQo4Twn7YYbunqi8bYTRwflKIRmI93rlz78OqN6gd2t9ahqqXnT2p3BvB5EaJ1wph0eLq2bFYH6I0cqig4KW/J3AJW5JZO1CKVCAcQwenPxDnC6z2ewhIectrYWbaqsmkynBcMbWj5bYY6/ry+wx1qBdN6oFBCkC4CE0fQ0LO+WtZbG4zAc5CEXdE7jnvfH1FZo7KyI3lKOjyCCIHfkf6wbr4+1RGNMt4r/PXFLU6e1lvRPlmKHeUVKk2uD3Gw6yZ60rFAvKGR9odDqWlVXNIuNdl+609rGjFb5s+PedUf1yfO1Fate3eoe9kIzR7U1Q/oF5YJX6XDQo/H2jyUL0rKEwrVIoUqsnJbRL6OyG3kUDXz3aGiOJHKSTE4WpSuGVLDNX6+Ovpe0yPaATJ54pVpcO5YujToBkOqNJ2q3wMdXVl/nr7siFZoIOAdZcG/jNmlqpVxRxQMdLR8KmOznlvu1ToZ4w7vo0V0o8m4duwXlaZStjMlCFocKqx1b/oi5+sM33f1CyqO0pG08FzxdtcaXEtHNtp0sgw5OWX34bSfVZNseBinxwaVWU+Vf5q97HjYWLdXSppzP0PoOwXrRYbAzC3iK9Nz5xIwS7W84e019ruq4hwvbzUKL0Xp+nPbDjx7ZX4QiSInS+yZ2aVfmCArJ0oTOxNsUUPBm7ueC2mWpTBdM2+P29ZPZ5c3Oj2xDQQqWDkBtLyt7c3rIEG4XTHU83eKQzP8Mw6v4hVwA+JQ544bsCGunxwWXsm5a+Bn+yd2FwBy3dfqSH2uoB6GoC8v6bf26jngHDJYSMOm819oOO/gdG5tJIX9bOUP4YTOHMvc4u/XDKcjtZ5PcxVagd7R0vFPbYqeBcch+dznv2Q9lDa5+a6+aKSe0alCczUX7R+tr/kcODpsDXlumTPRxzgGe2tiKo0ukWLRyZkG2uPB0Bp0zupBLR5d0ogOMXEYu1rFPm1HRnQ5e9aj+IYbt3BAukZxn7mp863yzihObXW1ay2/6rtmquuE1JAE08n+WXZdpwCPQphr1+xq/pJ5Fw+NFfzirBKbmltvH/z7HcxWDuLeXmZd0D2u6M81OZShwD+1RS5UQNBpHdYpFtCzzaoHv7/89BNY1lH4sg6+u0G7KOI7z/2C8EWofjVm8dNMpjWnrPA1rEEGyRxPOemTVGhNH+NIwcYZDci/zqUVdEaPH4oDVaMEk1dufr7t5/oUlEuc5j879SY3u1lmQPh7WfPj/AH9tCVIYprKWrW96f62LoKZz2/2y2w3UzQEurjf/nVdt7y7CtKsgX98v5qrzfwgxHFZZmpPfRikeDCxg/VX3x1f++mkkC3ksxohNrUU3bO5lCgbBQFlypJYBSAje/U5qgQB5ftqSExeQDPs9HkqyT2uTacmWms7brq/FmmhrRQWMLN6JExkq/tOilHUVAUJVpC13/jOiErznhZ/8dqAjjkJIgahC/sbuDhvvNypE9a3ixZ7pm5L2G9h9hxIS5DxRKnlcEnu6RFDTUVKasa0MruPJ6vQMPRz9wg6sUu4RFB4fEx7f6O4U+ovvqC5vvDB5fM7JlpHSb9nDmXHV8R8ytp7gCBNqlfcrdWvDuiWkW+cLP3p5g/qZNE6208E9Z3LeiQ33GTuLMxLN773GcHol27BKWXkRCijJpJKjOiEaK2b0jLuV6ouv5mTb4fDzJpkBc2IEputqJFMzK5LMmUoO5i4sdaQ+KOaAFApUHXs2jnMj6QjVHGdGtIacpo75C3qriYLmi22PI5UpH2aRnc1KzRDX1qtTpJ8PmbNwXbss0eqz/WjWu/lExM1BsYugV3lE7nNUrhMZciUGmVMOGs1+EByySl6MKccw3i04HC5+bcCivPuCUX6906GorN1K/PCvmbpJMMbKWd9DlAdfegG3q8wSfmXvtum513lGibsNrigVZHdmbr/r8VexAioz8XDAmWc0fwgy60qfy56cdkWNS+WflKqnOVR91Xxbi2hP3fhm9eyMbA9Pb/2R89esKfqeOj2bfykJ6hCbB9TMewxzTI7VTHzDrVySW6p90qj32T8LGfJXagsO+pifeMF5pIN7feGsOslFDCHq+K0EL7ThJxnDU0Nnz2kdTbrWdQ+Ik+hT5QybVhIx+AH4a8c7u1QfN/9i+fG+FZN+zUde+Xz/UtBo1XiJwGKqYQfgYLjq2fgkzdNQJ3QRmGbwvkbmT6/CBfkp6fVqituzL8aIKqcTiPxer+/1NFT+aGPF62lt9wfhht0nNGSRaDzx8rfC4AeGegwgvFp9MBJom7TK2PBGtJI2eijisBlI7cjqUBnYoMSl86myKuehVFl8aWP405HxdPD6yIrHS7myZ+LiVYdiamsRwbeCC6DR+QR2C81gJOvxsYkVXEGcc5IMHOjD/xOTISBsTF8mQOX4s09Wyd2bhC05ffYOCOZC7xMaEKLi8kz0S5D+mRZq2/+WepNvhFTIHFjRKZMY3K427LzzUNmdV0XiI1lvIWLECHnF/f7QlbYC/nkzC8Ggo+TQ9H7UKHC90jDCZ/B47CO2NyDczJXtcZtmWseKpdg5GIvZ1A73z3iJeBa3+8DvkcGjuZBLLDoUoXFtzImulwltoc6l8h+HXuHa2ypWGDy0mQj79POUSm/XATn53SZUvyZHON7OUUWg/JEHLcDs7+xvuxlREml7gNjn/u8rGgkhldzZ+VM5GFbtcsufqhGtLQw6md6hr98S09pVTVKe1QM/jnvKt6/K3vJJMOfna0EAcMISyZr+Opp99xeHmzXAmSJ+Xvx61AB0i0vaRC1mIaBvO5Rl/Iz0esuhwWo3LxxACw09iiORma4OWkVqAlPWdUZECNKOIT46JSGKck8eIghID2KKxoTkF91HnY6xyC2s2O6Gj7ccxrM2Ed+cS+zpsu+QQn64WfZjKj3LoTOBju/HpgO0KryeDq/rOXPhx+Ed2e3a6JzMVxEJ6JfsZaX3NCe3jER41GBum3o1zG7nuo0yle4cvs602Md1i09Om+Pcerty7a+EXrE7VjDZFu2y6EnTz4ZtvgZf4CsdbVwRhrlZGo4fe/XN4SPM+/U33B991LJAn2s4iCq/NCyC78LPc1W7z+HtPWwtbBTsvGF2794OllhoQSaqImeHI6A8EwfvOrwUC0wD853GrzIUDVvePyWw5vR6RsS9fI9tLmFLSpzX7Tzuj1qE3LLpvV+paYp7SscR5T6882dpmFnXf3Pxu+9+eIs4SLh92QMethtkfd49pDNBlUman4eqieBs3sGSiUbQE4KbWN1UK8z7y0LnFvtlNZiwjv+wOxJEw3rFr7iZrEnLx7p3qbkL1O4/seKm89OIe5wwcizCeIpY4SZC+HTmcFJ0x2ulpDyPbbs/YZLf6m5FfiEfo+Y5jGn8jTrTDrMHHlgoVEPP39iRkOiOUBzj+bjgsfhfsgSy7S4KoquYwWaoEw1m1SFaRS0RJ5pM3e/l3m42R9ZiaWGxt21Yg/NSyYjOQ2nlFHZT4Jg12XrYcf0I+aedvnjniBbP8Eqq23XJKCJYKv90qpeiUTpssZepvgU3iJ16ylvqdb9psdcHmlsfcCPHJLFc91lF8urf/BY8b96An446cczv83AStY92muiq64rCdmLK6G64bmZYqGSPTfwNoTdgYTkBzydfIAHIrTpf0xMrc6PiYMvXYq4vkMXCwRclr1sLbgrFzRv/5NGmcIPKXcrnkRSDqPFPRDG7CRz/I0hoJzIRbDlcflSM4yKMSNgCxoGQC4oqDshpTB5b2GiqyJ3rLjDBC9+ggVl8+S+1IfTWEfrj7rA083jF9oXiuQrtTkdeU8Bhb141MNDa6CuPABFq0siVDKh/UE2OhGRHJSE/KZ269g7dGnsNdduudxorg9M8qY+tJkwEKzQ8IFQIndVRP7R9o71GDYaHHoIkygbVOlKHEKKP3ghhC6Qp3uOoFlZpumchc47bp0yz+SPVuwKUV/lfM/Sif78lBER6qg9zIhdHS+WiWgH7eJpQ9qtLR/CtKOI7DpcvkJs67jGygXApSXxh4SV+dRV31HPCjeg0s6dl12BzmQ/vHwJfm2psdJRrc/I6KLyjTutlc72y0+f3qvmV+IfoY/OPM/qrvRA9FX69FcSmapeOoOVAb9YSYfIJOYnC36QbXE2wrpXIlfsYG+/03N4ZVE0eKqrRJmjfYSWh25TW5qmKRIl2IJedxhLkSyHxFlZPI42S57vhZqeDXneo7gm52781l1JAx8MiZfUq6naId21KuN0zUeixnLag7GKuL/UdZ0/NWXp2lWmxeEcwTjnSlYF1UndA+9j5kHIUDOT3h+wbEQcKLTyuBvSqc43wM68JnV8gbkVF5j6WM//zqjuG9KOSpJPkKU4n3TWH0jDgx5HZgpsl32yAlnxrVbqBcW8woRctfvDA8jwJTGTMM9rNECxdRyOaKtck8NlXnNe134Rr7p7Oy/geikCeb1aeiEUZ4PaDiUotGcuM2uENVlZsYGPQg1fc974FSvTzZY+NfDnEGwZwEI4d06upQVo50xz+rlIomTaSmJol2vTh72KCPG414dlo3xA/Ga2Ockq3sx9UeRrdzYXLL+6cTOz4yKSvnpuFHzNNqX93V89jwYrWr96zgUc+eq5pGWsOGOObZfyuTDwgXZtFpAAIayC/GqTnwLd8bY0nz1tfFs8wguPDyuSlNzpA0yByGBmfHxCAnmjav1ZNNaQgbWw2A2XVQlJYIDJqYdoY+k+ppbWlhBLXU86PeSz+zKNrqfn7h+wP8jXO3c9o/2iDc7aPgfmiCXsx/q4BaiaY8M8g4IlNInE138f1trSWjbI0zuU6BaERexz8/Pd540N8fcnTu1GioJlLQBZeur5NGxk2v2WL/MkMOlOpEVilgUolUiH0xWy27+MbaOqxidhE46k0UWMZFrqNqVEWXPS/WFV5bJHkmGMjUV6cBItA5uUQLk67OJglshI0awJV5gXO3SlZOnQqAlYcnJxPKi4OiauOaqViPU8gsZuOcSkkOiIlOijGakkqqk5lskYw5oo7RJRW+KZ9OZ0DIN5cHfyc+SuRxH40VG8IpI7AyKT3Epyra2tcLZWJjF6EQW9AVhaGly+8QP89bgGUFVqbGuy84OonpdIriVhyFgVYJ+DILLBl2hGV04AE/iHmlqoBBuj2T/ps0A8kxqemkhnqqTRFHCMmtVEdgxWncXQnBdryGlRZLlHDpKs68Za6uLRCrTEWKm0hLDy5/UTRlhNfJ4WlDSluTaS2EQx0KrReJKkhaADMyIXTaiVSKP+57ZQoxboYiGBEGFpITl+cVDW8q2FqkHkoQ0JEGNgGWlskuVqZhoFpNqYooCbXimgArZy7cGsZWdRZyrttAczNVjv/hegMzLaLAqXZYLVp6b6nE8J89I9Ec9Ia1SvL7+MCzT7qExKrZ8fToqinZY+mGBAvX+0vokmtE3HJcdhdSoBW2qweIWUTFGJ8j+ckiIfmVLl7T+YMkhbSv0Qwx89iv35FsouFpP4XKio8KfVwfo6WGfyIZUzJ4DyDOn6LvDjA5Kx0ILo+3hDIiF4u7uH29pYePpY2FoE7yHusfAO8Qmy6K2qa3ihop8hHctIIiY9nXwWlEfX3HPMxQWL+Il/c8zXeGdsbLDKF+p9SIaHiWWglVRqfEPYepu/pZ3lDhmrTNVyq+S2Cd9VW0d7K38LiwDLeFvvBua4vcjtJnXfn24vSLLUN6RI8zjzeIYJS+87+x+2VeL2GxWXKisdNSxhCRgnwX2ks2YiqOC7hIu39s8sb6Dpmn6vUQJzOXsvaBjZzm/ILp114twPQ5u76taeF4KEzd2MSLyBZFy4lXwBo2Fg6UhI3twSw+IOg5vKrZziM5duURTJF6ubGV3Q0xUmd9IEepq1gNJW4zRo/s8R0g98A93KobVNstg4NZKk6voaxI1MJrrJeB5JBgPotHhUZgr+M8orOVX1yFx5YKp8cGhqEutA5t06SgLZ2nxkz5P0HRYUUijVdHT+Nj429pARleQhEM9HhjHQaVIJqenJManyjx9nuSZ+nfgYM2JJaYrg0bSm9/ViBVK2L4g8ULLQDF9BJBUhEk/HU2itGXLD2nJQOkNXjpHxIJQmy4jPICPPPHRIST0onUI4SB18+HSRdJAWSQKlE9Mim1s0tcFEJD0hAZ0BIqR+maxPZmQc0u2BvD/YMBGPSKB6picgAxFuHaPVDvZ6KcpVu4KwDMcfEEeHDxSKUhBJ9IOIWee0ozAk6eFVZS9Eajw1Dbnt9Nbxaj2p/XaS5XtdpPjKdwGeRIj018mU7EdJacS/plIG4sHx5jNSCNYWzCUARorOSMeowuAQKMx5+8D8CAtV+dIMCmDHEh6uwhAyQJpzhdrxbbsAS36tKsX7Wrd+qbBoTqVN8U1AnCU5hyQOGCPUO3w0MlbBvZIXi/iWdOMVaXO4kWlfRmcw3vLg0emLcV4VWaos/2TNNJ/q2g5/XEYNAOyx7rGQ+Tqyi2tTZuEBXpuwRCIJF8qVnoB7FSO8IWNMBFeHvfBZcYw+3/h1PvZviiIfMsZYZMp8o4wZ66fsWShdvmMauXmavSQBQc6Tf/c//Q/CxLr9B/+firE7pPK+AB8lEvZLCE/Jiv3lc7rCCSnCZlO+zNW5eIlEUsqVYnfCOAh2L4w9B8v4ABmYI27KMZzVprXNTk8gvM1nnSEZqyxXCHOZizgRC0vsmEV28DHHu03WWMJZyNLXs9LFgrcjvLav8zMuQoYPOnNjYbwCHFC6edePAexepKTceXNftlkOyQfHOZ/CfZbvh0rK8Zviph3BgbK7YMI3kvKATYF732Mzb1Zbkkhavo7QAkIOw4LDJb/yiq5u/nssbC4rzjg3IiAk4KsYQeJ5GLAOA07dzL/YItacY8bXyen/+4i7BgDO1/5To27yiGvA/xJHNvXjm1G+Gbc249FmdH7zDn5b93oG7fMk2tpYehCJAJWRHk8HLckUyuYvRBqJTEw+SCfRj7oBgHfC318dNzKZnsBgAEBYMh1kkiibGpgQD/6Lu1EotPh/Ma/N93+z0n99sv4+CMQm0w4C/x//h/gfUEsDBAoAAAAAAEhOZEkAAAAAAAAAAAAAAAAEAAAAc3JjL1BLAwQUAAAACADPTWRJveqjmB4GAACsDgAACAAAAHNyYy9ybi5jtVfrbxNHEP9sS/4fNlfVL2yfL0WoSri0hjqJpbzkhLY0sazLeW2fcO6svXUSFNL/hZdEkapCgYQ0QCQSKI1UQBSSColvbVVUqVXbD0ilVJ3dvZfjkKhSOVn23cz85uY9azkZCYeK+YFjQ7kiKuZHcsOFkQE0MTo6NJ5CH+aL44XREaRkFCY1ksl/nIebo6Njx4uFgcGJ97uzyqFP4etddOQ4GsyNjR2PhJNyJPyWYeqNVgUjfknEzNSlAPWwTSvTltXI1PuCsocrBsE63UFl12HD4tRIWJaXLjz68fbyraX1l9u/Xv3zyrmle2cvbG/dfHr2M0BVcNUwATSWmxgsjxc+ySMl233Qhd3fuPHPXrB+cD8fhDHgk1eP/1j/e/3lV19svkKR8KxlVCBQ5SI2tRkch3DolmlTpNc1kkSjpFYe02g9hWR55dz2i4212zeYCGcCalijOjDFJcuPLt49f+eHaxvsHUGxfovMaDTli10HAzyxlmkbNRNX+DtR/1BuQIjdX127uPJ9JJyIhBdAzDApsqlGQE8DmzVa73Vewa0cAesnfYdLHvNoi3AXJv0g+kx2NTuZwJbl1d/vnb52+etLjs/lGqb6XCXu6kv5kIQL+ebnrfVAmMp6HUog7gaRiYXgY1PS0ikqQ44qFY1qZYr6jQYe7w0JL5uUAKmumZUGVrlU1SA2jUtJKRXlklwTqzg0rMYdQTWtJN4DzbinqjVs7Lxrrg7y8a7hxAI3EWzcvrR5n9UbYo9GlWU8FPJsnFRKXSqK9cQSKBplLBTgZYEXm5qKQUKAnljgUPBGb56MN3lI3OAkej2eRh2eNDUlCfqi82pgQyb9+PRlEwudOI+9n07h3+Xry8/WX165C/6x7HoGukWSEsHOsHJnUFdMdMaXz5888pBgYhHX8Hy/YVYCeL/uo049RkVBJlRVSSy4aEcjK3Ue6xDXVcTNhqbjuG9EUGGgV3bqFt7L8s3V1fMPHm/eEjrBRNYwUcWJXFv3sqgxk9W2HLmOOBqZCiKa35VvC5GqulkJhZoEyrMalybHW7qOcaUEjr5to3S6D36mTCmFXhdlhl7EUJcdqvKEWKSrq1PVrta4qiLhHQo9fRPYpoZZ+0+mcXX8C/qJd5yJ56nTWSnkNF2Xmt3ZYQzD5fWGZWMH4Pa5LF97tvJ8+7uNtUjYTVRf30ERzd3aOwMNjgIdHtqzu9t6W+RROKZRSoxpFEXlXHn82JEPCkVHwmt3aHhWEjPNtjKUMhL30en8gFRASso4UkLEKw1ZZguFOYwcir9U9q11FpkdqeXf+2XDnya7J2HRHeUrjz9nM/n0mc1vl+9sPL36k2hShJwR3Ta3qgTjuFstPiUosyh26aXftv56eOfBGWeNDuJGs1wwq9wrwzLj/YWhfBKWFsHaTAqxBZafN2j5qFXBzlKrNlvU5kmR9jqGtJ1doJo5YPdjjstN/5+Xq5SYKN1Ek2yQlNBkunoqTU+lqwR+CDxPSTMstQjPNwm2bYjAlMTJIiLt9DdqJ2Q2XUfjdWsO1SEpyPCTEhRpoo8scgKmBapbMxiJ85pFTgZlqpAzrCOCa62GRhAflYBIoZaNgUsQtYCot4htzGJkt6ZdLQa2g3ooYpPpdXrofnpCby5YiiJn35FZ0TmUlKhYuOXVj6Fm437heuWf9K7hXGFk6wUbAPd+WXvq02WYBazqZzTDjLMbjdT0lDjnJZPsaTZwuDNUpdc7NbLE8Hbr3fWEyBc3m2dMY5d6EGYWEreHEgsdfQjnc0xICimJ3kUXiBh0dtIowbFGVWNpfuLxiQojNoEoJhwDdGmw9GxbiHSXUijrckOetarDFMPMOKB287vAphIdL/G1x8+efDkJC50ZSDBtQad1e+PNh/svkiR/whnVDme4dIDeDXQUIw4jxGKoZueV7E7zHEY2689We85gXR0IjaNE16B0Y9UY6oHT+tbVhw+vb7hnHa7nFFOkOHN9GkrqRG8ARwVu89byEsOFfFwUcP3ZThz8rdFaDYp6+FN7JK0my3RnLN1gKr4/sJdffLe+439QcF95QU4h4fMBpeTddpcC+8oP3F415+XJsSUrWuhfUEsDBBQAAAAIAJBLZElHmdprrAAAAM8BAAAIAAAAc3JjL3JuLmiVj0EKwjAQRdcGcoeAGxXxAhZ3eoB6gBLTsR0I05KMUG9vk0psaxFczp/5/81fIxn7KEGpzHOJzaE+SZHEoFm8fYkOqZqKKjP8bCGKUiCxyqGC7oJUbqRYmVq7nRqM+zQrF24K6FoH3mNDYdV7w6V2nCYLVHEtxfY4Cc+htdrAj/x7jy8+kAk5emfLEXsGFoH89p47dtrwNdKW6OHDcYPFApH/d8ZChcEzhL8AUEsBAh8AFAAAAAgA7E1kSbhSk/YGAwAAQwgAAAkAJAAAAAAAAAAgAAAAAAAAAHJlYWRtLnR4dAoAIAAAAAAAAQAYAI3hrGQ9NtIB47Kb8D020gHjspvwPTbSAVBLAQIfABQAAAAIAENOZEnpwLF1PhwAAAAgAAAGACQAAAAAAAAAIAAAAC0DAABybi5leGUKACAAAAAAAAEAGACAcc/EPTbSAYNRmfA9NtIBg1GZ8D020gFQSwECHwAKAAAAAABITmRJAAAAAAAAAAAAAAAABAAkAAAAAAAAABAAAACPHwAAc3JjLwoAIAAAAAAAAQAYAKxtlco9NtIBrG2Vyj020gGaqsIzOzbSAVBLAQIfABQAAAAIAM9NZEm96qOYHgYAAKwOAAAIACQAAAAAAAAAIAAAALEfAABzcmMvcm4uYwoAIAAAAAAAAQAYABOO1kM9NtIBg1GZ8D020gGDUZnwPTbSAVBLAQIfABQAAAAIAJBLZElHmdprrAAAAM8BAAAIACQAAAAAAAAAIAAAAPUlAABzcmMvcm4uaAoAIAAAAAAAAQAYAOW2S8E6NtIB47Kb8D020gHjspvwPTbSAVBLBQYAAAAABQAFAL0BAADHJgAAAAA=
  7. -----END BASE64-----
复制代码

作者: 523066680    时间: 2016-11-4 11:40

本帖最后由 523066680 于 2016-11-4 11:46 编辑

perl挺合适做这个

http://bbs.bathome.net/thread-34881-1-2.html

C语言, 在遇到带unicode符号的文件名时,应该是用 Win32 API 那一套比较合适
作者: happy886rr    时间: 2016-11-4 11:53

回复 2# 523066680
是啊,但是考虑到perl体积巨大。转化为双字是好处理。
作者: pcl_test    时间: 2016-11-4 12:47

建议在帮助信息里说明下支持咋样的正则表达式和元字符,比如数字是否支持[0-9]和\d两种,是否支持{m,n}等,另外加上文件和文件夹独立开关,默认同时处理文件和文件夹,对于有时仅需要处理子目录下的文件或文件夹时,如果存在同名的文件和文件夹,就会误伤
作者: happy886rr    时间: 2016-11-4 12:57

回复 4# pcl_test
感谢大师建议,下一版本会采纳,并改用其他正则引擎,以加强正则表达式的支持程度。
作者: CrLf    时间: 2016-11-25 01:09

强烈建议改成宽字符版本
作者: CrLf    时间: 2016-11-25 01:32

另外,从源码看起来好像是有重复更名的问题,就是会把已经改过名的文件再次改名...
作者: happy886rr    时间: 2016-11-25 09:21

回复 7# CrLf
感谢大师提醒,我打算换用pcre的核心,这个迷你版rn用的正则库太简单了,只支持非常低级的正则,不支持什么\d ?等高级正则。如果更换引擎,生成的exe文件将会超过20kb。
作者: CrLf    时间: 2016-11-25 10:25

回复 8# happy886rr


    有个 PCRE2,语法类似,但版本号大变,不知道是多了什么内容
作者: happy886rr    时间: 2016-11-25 22:58

回复 9# CrLf
pcer2体积太大了,800kb多,不过pcre2的功能很强大。同时正则越复杂,运行速度越慢。
作者: CrLf    时间: 2016-11-25 23:29

回复 10# happy886rr


    pcre 和 pcre2 默认编译的内容中有 JIT 之类非必要的模块,如果只编译最基本的源码,会小很多,大概是 100K+
作者: happy886rr    时间: 2016-11-25 23:56

JIT 我去查查,我对这些不是很熟。但是正则非常好玩。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2