Board logo

标题: [文件操作] [已解决]如何根据指定文本的内容批量重命名文件? [打印本页]

作者: lxh623    时间: 2016-3-13 13:56     标题: [已解决]如何根据指定文本的内容批量重命名文件?

本帖最后由 lxh623 于 2016-3-14 19:09 编辑

E:\ABC Book\佛教--cbeta汉文大藏经_epub_201405
下面有很多文件夹,内有许多epub文件(几千)。
想按照文本a命名。文本a内容如下:
A091n1066--新译大方广佛华严经音义--唐 慧菀述
T01n0001--长阿含经--後秦 佛陀耶舍共竺佛念译
T01n0002--七佛经--宋 法天译
T01n0003--毘婆尸佛经--宋 法天译
T01n0004--七佛父母姓字经--失译
T01n0005--佛般泥洹经--西晋 白法祖译
T01n0006--般泥洹经--失译
现有文件名是
A091n1066
T01n0001
T01n0002
T01n0003
T01n0004
T01n0005
T01n0006

谢谢!
作者: codegay    时间: 2016-3-13 14:09

你也是老号了。这种简单问题也不舍得自己学下。
作者: ivor    时间: 2016-3-13 14:35

本帖最后由 ivor 于 2016-3-13 15:03 编辑

回复 1# lxh623
按照file_list.txt文本的格式修改文件名,运行环境Python3.5
  1. # coding:utf-8
  2. # python 3.5.1
  3. # 遍历文件修改文件名
  4. import os
  5. with open('file_list.txt') as file:
  6.     for i in file:
  7.         i = i.strip().split('--', maxsplit=1)
  8.         for root, dirs, files in os.walk('.'):
  9.             for filename in files:
  10.                 if filename == i[0]+'.epub':
  11.                     src = '%s\\%s.epub' % (root,i[0])
  12.                     dst = '%s\\%s.epub' % (root,i[1])
  13.                     print(src)
  14.                     os.rename(src,dst)
复制代码
批处理
  1. @echo off
  2. for /f "tokens=1,* delims=--" %%a in (file_list.txt) do (
  3. for /f "delims=" %%c in ('dir /b /s %%a.epub') do (
  4. ren "%%c" "%%b.epub"
  5. echo %%c
  6. )
  7. )2>nul
  8. pause
复制代码
很高兴能为圣佛贡献一份力量,O(∩_∩)O~
作者: happy886rr    时间: 2016-3-13 19:13

本帖最后由 happy886rr 于 2016-3-13 22:19 编辑

回复 1# lxh623
第三方 ren2
  1. for /f "tokens=1* delims=--" %%a in ('type a.txt') do (ren2 -f -r "%%a.epub" "%%a--%%b.epub")
复制代码

作者: lxh623    时间: 2016-3-13 21:05

我以前的代码只在一个文件夹运行,却说找不到路径。
  1. @echo off
  2. for /f "delims=*" %%i in ('dir /s/b/a:d-h E:\ABC Book\佛教--cbeta汉文大藏经_epub_201405\A091\') do (
  3.       for /f "tokens=1,* delims=--" %%j in (a.txt) do (
  4.          if exist "%%i\%%j*.epub" ren "%%i\%%j*.epub" "%%j-%%k.epub"
  5.          if exist "%%i\%%j*.txt" ren "%%i\%%j*.txt" "%%j-%%k.txt"
  6. ))
  7. pause
复制代码

作者: lxh623    时间: 2016-3-13 21:06

回复  lxh623
按照file_list.txt文本的格式修改文件名,运行环境Python3.5批处理很高兴能为圣佛贡献一份力 ...
ivor 发表于 2016-3-13 14:35


谢谢!批处理命名结果是:七佛父母姓字经--失译
作者: pcl_test    时间: 2016-3-13 21:16

  1. @echo off&setlocal enabledelayedexpansion
  2. cd /d "E:\ABC Book\佛教--cbeta汉文大藏经_epub_201405\"
  3. for /f "tokens=1* delims=-" %%a in (a.txt) do set #%%a=%%b
  4. for /r %%c in (*.epub) do if defined #%%~nc ren "%%c" "!#%%~nc!%%~xc"
  5. pause
复制代码

作者: lxh623    时间: 2016-3-13 21:57

pcl_test 发表于 2016-3-13 21:16

还是:新译大方广佛华严经音义--唐 慧菀述
作者: happy886rr    时间: 2016-3-13 22:27

本帖最后由 happy886rr 于 2016-3-13 22:28 编辑

回复 1# lxh623
第三方下载地址http://batch-cn.qiniudn.com/tool/ren2.exe
跟正常批处理一样,就是多下载个ren2.exe和批处理一起放在要改的目录。
作者: pcl_test    时间: 2016-3-13 22:47

回复 8# lxh623


    改下
set "#%%a=%%a--%%b"
作者: luotexiaozh    时间: 2016-3-14 14:38

本帖最后由 luotexiaozh 于 2016-3-14 15:45 编辑
  1. for /f %%a in ('dir /b /s E:\ABC Book\佛教--cbeta汉文大藏经_epub_201405\') do (
  2. for /f  "tokens=1,* delims=" %%b  in ('findstr "%%~na"  a.txt ') do (
  3. ren "%%a" "%%b.epub"
  4. )
  5. )
复制代码

作者: luotexiaozh    时间: 2016-3-14 16:09

回复 5# lxh623
  1. @echo off
  2. for /f "delims=*" %%i in ('dir /s/b/a-d-h E:\ABC Book\佛教--cbeta汉文大藏经_epub_201405\') do (
  3.       for /f "tokens=1,* delims=--" %%j in (a.txt) do (
  4.          if exist "%%~dpi%%j*.epub" ren "%%~dpi%%j*.epub" "%%j-%%k.epub"
  5.          if exist "%%~dpi%%j*.txt" ren "%%~dpi%%j*.txt" "%%j-%%k.txt"
  6. )
  7. )
  8. pause>nul
复制代码
这样子看看




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