Board logo

标题: [文件操作] 批处理如何批量修改文件为指定文件名? [打印本页]

作者: 暴雪英雄    时间: 2024-1-21 14:44     标题: 批处理如何批量修改文件为指定文件名?

平时收集各部门word文档,但是命名五花八门,不是很规范,需要批量修改文件名为编号加部门规范名称,比如带“办公室”的文档,修改为“01办公室”;“XX财务XX”的文档,修改为“02财务科”,“XX人事XX”的文档,修改为“03人事科”,以此类推,请问代码要怎么写?
作者: hfxiang    时间: 2024-1-21 16:45

回复 1# 暴雪英雄
建立“映射关系.txt”文件,如:
  1. 办公室 01办公室.docx
  2. 财务部 02财务部.docx
  3. 公关部 03公关部.docx
复制代码
下载gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe ),执行如下脚本:
  1. dir *.doc*/b>1.txt
  2. gawk "FNR==NR{map[$1]=$2;next}{for(i in map)if($0 ~ i){printf( \"move /Y \\\"%%s\\\" \\\"%%s\\\"\n\",$0,map[i]);next}}" 映射关系.txt 1.txt|cmd.exe
  3. del 1.txt
复制代码

作者: 77七    时间: 2024-1-21 17:35

本帖最后由 77七 于 2024-1-21 17:40 编辑
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. set _"办公室"=01办公室
  5. set _"财务"=02财务科
  6. set _"人事"=03人事科
  7. for /f tokens^=1*delims^=^"^=^_ %%a in ('set _') do (
  8. if exist "*%%a*.doc*" (
  9. ren "*%%a*.doc*" "%%b.doc*"
  10. )
  11. )
  12. pause
复制代码

作者: 暴雪英雄    时间: 2024-1-22 14:26

本帖最后由 暴雪英雄 于 2024-1-22 17:43 编辑

回复 3# 77七


    感谢大虾,目前可以实现,再次请教,如果某个科室报过来的材料,文件名有不同关键字,请问需要怎么改,比如财务室,有可能是写的“财务”或“财会”,即多个关键字,相应改成同一个科室名称。另外,如果文件名需要加上输入的指定日期,未输入默认当天日期,需要怎么完善?

举例:

输入20240111,"财务.doc"或"财会.doc"修改为"02财务科(20240111)",
直接回车,"财务.doc"或"财会.doc"修改为"02财务科(20240122)",0122为当天日期。
作者: 77七    时间: 2024-1-22 20:54

回复 4# 暴雪英雄

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. :1
  5. for /f %%i in ('powershell -c "Get-Date -uformat '%%Y%%m%%d'"') do (
  6. set "Today=%%i"
  7. )
  8. set /p Today=输入日期或按回车默认当前日期:
  9. echo %Today%|findstr /rc:"[0-9][0-9]*" 1>nul || goto :1
  10. set _"办公室"=01办公室
  11. set _"财务"=02财务科
  12. set _"财会"=02财务科
  13. set _"人事"=03人事科
  14. for /f tokens^=1*delims^=^"^=^_ %%a in ('set _') do (
  15. if exist "*%%a*.doc*" (
  16. ren "*%%a*.doc*" "%%b(%Today%).doc*"
  17. )
  18. )
  19. pause
复制代码

作者: 暴雪英雄    时间: 2024-1-23 09:05

回复 5# 77七


    收到,万分感谢




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