Board logo

标题: [文本处理] 批处理如何修改文件名 [打印本页]

作者: wenyuer520    时间: 2022-3-9 20:59     标题: 批处理如何修改文件名

假设我有三个文件夹,文件名分别为小明、小红、小军,每个文件夹内有很多各文件。比如有学历、身份证、考试成绩等等。我现在想用批处理实现如下需求:
1、把文件改名为:小明-学历,小明-身份证....小红-学历...小军-学历;
2、读取出所有文件的文件名到EXCEL里,以便核对哪些人少了什么资料
3、复制所有学历文件到单独的一个文件夹里
请问有哪位大神知道这个批处理怎么写么?
作者: Batcher    时间: 2022-3-9 23:20

回复 1# wenyuer520


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. cd /d "%~dp0"
  3. (for /f "delims=" %%i in ('dir /b /ad') do (
  4.     for /f "delims=" %%j in ('dir /b /a-d "%%i"') do (
  5.         ren "%%i\%%j" "%%i-%%j"
  6.         echo,%%i-%%j
  7.     )
  8. ))>"Excel.csv"
  9. set "NewFolder=学历文件夹"
  10. if not exist "%NewFolder%" (
  11.     md "%NewFolder%"
  12. )
  13. for /f "delims=" %%i in ('dir /b /s /a-d *学历*') do (
  14.     copy /y "%%i" "%NewFolder%\"
  15. )
复制代码

作者: qixiaobin0715    时间: 2022-3-10 10:37

本帖最后由 qixiaobin0715 于 2022-3-10 13:10 编辑
  1. @echo off
  2. rem 在下面变量中列出所有文件名,即你说的学历、身份证、考试成绩等等,并以空格分隔。
  3. set FileNamesList=学历 身份证 考试成绩
  4. (for /f "delims=" %%i in ('dir /b /ad') do (
  5.     pushd "%%i"
  6.     for /f "delims=" %%j in ('dir /b /a-d') do ren "%%j" "%%i-%%j"
  7. rem 将缺失文件保存到NExFiles.txt中。
  8.     for %%k in (%FileNamesList%) do if not exist *%%k* echo,%%i-%%k
  9.     if not exist "%~dp0学历" md "%~dp0学历"
  10.     copy *学历* "%~dp0学历">nul 2>nul
  11.     popd
  12. ))>"%~dp0NExFiles.txt"
  13. pause
复制代码

作者: wenyuer520    时间: 2022-3-11 17:01

感谢两位大神




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