标题: [文件操作] 批处理如何批量修改文件为指定文件名? [打印本页]
作者: 暴雪英雄 时间: 2024-1-21 14:44 标题: 批处理如何批量修改文件为指定文件名?
平时收集各部门word文档,但是命名五花八门,不是很规范,需要批量修改文件名为编号加部门规范名称,比如带“办公室”的文档,修改为“01办公室”;“XX财务XX”的文档,修改为“02财务科”,“XX人事XX”的文档,修改为“03人事科”,以此类推,请问代码要怎么写?
作者: hfxiang 时间: 2024-1-21 16:45
回复 1# 暴雪英雄
建立“映射关系.txt”文件,如:- 办公室 01办公室.docx
- 财务部 02财务部.docx
- 公关部 03公关部.docx
复制代码
下载gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe ),执行如下脚本:- dir *.doc*/b>1.txt
- 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
- del 1.txt
复制代码
作者: 77七 时间: 2024-1-21 17:35
本帖最后由 77七 于 2024-1-21 17:40 编辑
- @echo off
- rem 批处理保存为ansi编码格式
- cd /d "%~dp0"
- set _"办公室"=01办公室
- set _"财务"=02财务科
- set _"人事"=03人事科
- for /f tokens^=1*delims^=^"^=^_ %%a in ('set _') do (
- if exist "*%%a*.doc*" (
- ren "*%%a*.doc*" "%%b.doc*"
- )
- )
- 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# 暴雪英雄
- @echo off
- rem 批处理保存为ansi编码格式
- cd /d "%~dp0"
- :1
- for /f %%i in ('powershell -c "Get-Date -uformat '%%Y%%m%%d'"') do (
- set "Today=%%i"
- )
- set /p Today=输入日期或按回车默认当前日期:
- echo %Today%|findstr /rc:"[0-9][0-9]*" 1>nul || goto :1
- set _"办公室"=01办公室
- set _"财务"=02财务科
- set _"财会"=02财务科
- set _"人事"=03人事科
- for /f tokens^=1*delims^=^"^=^_ %%a in ('set _') do (
- if exist "*%%a*.doc*" (
- ren "*%%a*.doc*" "%%b(%Today%).doc*"
- )
- )
- pause
复制代码
作者: 暴雪英雄 时间: 2024-1-23 09:05
回复 5# 77七
收到,万分感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |