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

[文件操作] 批处理怎样根据文本列表重命名论文文件(列表内容包含原文件名)

写论文需要下载多个论文参考,下载的文件名如下,保存在同一文件夹下
  1. 自主可控环境下三维海量态势显示优化方法.pdf
  2. 机载CPU板硬件故障诊断平台的设计研究.pdf
  3. 计算机硬件常见故障及维修技巧实践分析.pdf
  4. 基于OpenSPARC T1的浮点运算单元微架构的研究.pdf
复制代码
导出文件的参考文献包含详细的作者及日期等信息如下
  1. [1] 赵祥师,汪浩,乔兵克等.机载CPU板硬件故障诊断平台的设计研究[J].数字通信世界,2019,(5):149,73.DOI:10.3969/J.ISSN.1672-7274.2019.05.119.
  2. [2]王世雄.计算机硬件常见故障及维修技巧实践分析[J].数字化用户,2019,25(2):162.
  3. [3] 占伟伟,李坪泽,王辉等.自主可控环境下三维海量态势显示优化方法[J].指挥信息系统与技术,2019,10(2):80-84.DOI:10.15908/j.cnki.cist.2019.02.015.
  4. [4] 张若愚,谢龙.基于OpenSPARC T1的浮点运算单元微架构的研究[J].集成电路应用,2019,36(2):15-17,21.DOI:10.19339/j.issn.1674-2583.2019.02.003.
复制代码
现在需要依次把下载的pdf文件改为参考文献格式的文件名,如
  1. 计算机硬件常见故障及维修技巧实践分析.pdf
  2. 改为
  3. 王世雄.计算机硬件常见故障及维修技巧实践分析[J].数字化用户,2019,25(2):162.
复制代码
根据参考文献txt中的内容改名,如改名失败,有提示信息,其中文件的排列不一定按顺序,/等不能用在文件名中的符号可以改为另一个符号代替,个人水平有限,求助高手们,谢谢了

看你给出的 可在参考文献txt内容中 按PDF文件名搜索,但实际运行中不确定是否会有错误搜索

TOP

本帖最后由 WHY 于 2019-12-20 16:29 编辑
  1. $path = 'E:\Test\';                #存放pdf文件的目录路径
  2. $arr  = gc -Literal ($path + '参考文献.txt') -ReadCount 0;
  3. $reg  = '[' + ([IO.Path]::GetInvalidFileNameChars() -join '').Replace('\','\\') + ']';
  4. forEach( $f In (dir -Literal $path -filter *.pdf | ?{$_ -is [IO.FileInfo]}) ){
  5.     $name = [regex]::Escape($f.BaseName);           #转义特殊字符
  6.     if( $m = $arr -match $name ){
  7.         $newFile = $m[0].Trim() -replace $reg, '';  #删除非法文件名字符
  8.         $newFile = $path + $newFile + $f.Extension;
  9.         move -Literal $f.fullName -Dest $newFile -Force -WhatIf;
  10.     }
  11. }
复制代码
WhatIf: 对目标“项: E:\Test\基于OpenSPARC T1的浮点运算单元微架构的研究.pdf 目标: E:\Test\[4] 张若愚,谢龙.基于OpenSPARC T1的浮点运算单元微架构的研究[J].集成电路应用,2019,36(2)15-17,21.DOI10.19339j.issn.1674-2583.2019.02.003..pdf”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\机载CPU板硬件故障诊断平台的设计研究.pdf 目标: E:\Test\[1] 赵祥师,汪浩,乔兵克等.机载CPU板硬件故障诊断平台的设计研究[J].数字通信世界,2019,(5)149,73.DOI10.3969J.ISSN.1672-7274.2019.05.119..pdf”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\自主可控环境下三维海量态势显示优化方法.pdf 目标: E:\Test\[3] 占伟伟,李坪泽,王辉等.自主可控环境下三维海量态势显示优化方法[J].指挥信息系统与技术,2019,10(2)80-84.DOI10.15908j.cnki.cist.2019.02.015..pdf”执行操作“移动文件”。
WhatIf: 对目标“项: E:\Test\计算机硬件常见故障及维修技巧实践分析.pdf 目标: E:\Test\[2]王世雄.计算机硬件常见故障及维修技巧实践分析[J].数字化用户,2019,25(2)162..pdf”执行操作“移动文件”。
1

评分人数

TOP

回复 3# WHY
非常感谢,这个代码怎么运行,感觉不是bat文件,运行不了 :L

TOP

回复 4# wjh6088


PowerShell脚本的执行方法:
http://bbs.bathome.net/thread-31071-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 wjh6088 于 2019-12-20 10:23 编辑

回复 5# Batcher
winxp系统提示如下:
  1. Microsoft Windows XP [版本 5.1.2600]
  2. (C) 版权所有 1985-2001 Microsoft Corp.
  3. C:\Documents and Settings\Administrator>powershell
  4. 'powershell' 不是内部或外部命令,也不是可运行的程序
  5. 或批处理文件。
  6. C:\Documents and Settings\Administrator>powershell
  7. 'powershell' 不是内部或外部命令,也不是可运行的程序
  8. 或批处理文件。
  9. C:\Documents and Settings\Administrator>
复制代码
另外我觉得for命令比较容易理解,思路是dir目录下的pdf,然后每一个pdf依次在参考文献.txt中查找,如果某一行的文本包含现在的pdf文件名,就更名。

TOP

回复 6# wjh6088


    XP没有自带PowerShell需要自己安装,多少年的老系统了,还不换成Win10吗
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# Batcher


    win10太大太卡 老电脑没法用。。。

TOP

  1. @echo off
  2. for /f "delims=" %%i in ('dir /s /b *.pdf') do (
  3. call :renPDF "%%~i"
  4. )
  5. echo 重命名完成
  6. pause&exit
  7. :renPDF
  8. setlocal enabledelayedexpansion
  9. for /f "delims=" %%i in (pdfInfo.txt) do (
  10. set "line=%%i"
  11. set "newLine=!line:%~n1=!"
  12. if not "!newLine!"=="!line!" (
  13. echo 查找PDF: "%~n1"
  14. echo 找到TXT: "!line!"
  15. set "line=!line::=.!"
  16. set "line=!line:/=#!"
  17. echo 执行重命名:"%~1" --^> "!line!"
  18. rename "%~1" "!line!"
  19. echo ------------------------------------------------------------
  20. setlocal disabledelayedexpansion
  21. goto :eof
  22. )
  23. )
  24. setlocal disabledelayedexpansion
  25. echo TXT未找到:"%~nx1"
  26. echo ------------------------------------------------------------
  27. goto :eof
复制代码
bat,pdf,pdfInfo.txt放到同一文件夹
2

评分人数

TOP

回复 9# went
好多天了,没想到还有朋友能答复,非常感谢,完美运行。

TOP

返回列表