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


    文件名含 +-~() 等字符呢?

TOP

本帖最后由 pcl_test 于 2015-8-20 11:42 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /s *.txt') do (
  3.     set "fn=%%~nxa"
  4.     set "fn=!fn: =_!"
  5.     if defined #!fn! (
  6.         for %%i in (!fn!) do copy "%%a" "new\%%~na(!#%%i!)%%~xa"
  7.     ) else copy "%%a" "new\"
  8.     set/a #!fn!+=1
  9. )
  10. pause
复制代码

TOP

本帖最后由 WHY 于 2015-8-21 15:50 编辑

一种思路:
把当前目录(包括子目录)的所有文件复制到 d:\new文件夹,遇到同名文件时,自动增加(1)、(2)等编号
如果只需要复制指定类型的文件,修改第4行的 *.* 即可。比如改成 *.txt 就只复制扩展名为txt的文件
  1. 1<1/* :
  2. @echo off
  3. md d:\new 2>nul
  4. for /f "tokens=1*delims=/" %%i in ('dir /b /s /a-d *.*^|cscript //Nologo //E:jscript "%~f0"')do (
  5.     copy "%%j" "d:\new\%%i"
  6. )
  7. pause & exit
  8. */
  9. var map = {};
  10. var str = WScript.StdIn.ReadAll().replace(
  11.     /.+\\(.+)\r\n/g,
  12.     function(a,b){
  13.         var s = '', n = b.toLowerCase();
  14.         map.hasOwnProperty(n)?(map[n]++,s='('+map[n]+')'):map[n]=0;
  15.         b = b.replace(/(.+?)(\.[^.]+|)$/, '$1'+s+'$2');
  16.         return(b + '/' + a);
  17.     }
  18. )
  19. WScript.Echo(str)
复制代码
1

评分人数

TOP

批处理复制或重命名文件的时候对重复文件依次添加数字序号
http://bbs.bathome.net/viewthread.php?tid=9355#pid60621
http://bbs.bathome.net/viewthread.php?tid=11423#pid72681

TOP

返回列表