找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34432|回复: 9

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

[复制链接]
发表于 2019-12-18 10:30:29 | 显示全部楼层 |阅读模式
写论文需要下载多个论文参考,下载的文件名如下,保存在同一文件夹下
  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中的内容改名,如改名失败,有提示信息,其中文件的排列不一定按顺序,/等不能用在文件名中的符号可以改为另一个符号代替,个人水平有限,求助高手们,谢谢了
发表于 2019-12-18 13:57:35 | 显示全部楼层
看你给出的 可在参考文献txt内容中 按PDF文件名搜索,但实际运行中不确定是否会有错误搜索
发表于 2019-12-19 16:47:56 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
wjh6088 + 1 谢谢

查看全部评分

 楼主| 发表于 2019-12-20 09:11:07 | 显示全部楼层
回复 3# WHY
非常感谢,这个代码怎么运行,感觉不是bat文件,运行不了 :L
发表于 2019-12-20 10:04:28 | 显示全部楼层
回复 4# wjh6088


PowerShell脚本的执行方法:
http://bbs.bathome.net/thread-31071-1-1.html
 楼主| 发表于 2019-12-20 10:14:09 | 显示全部楼层
本帖最后由 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文件名,就更名。
发表于 2019-12-20 13:45:09 | 显示全部楼层
回复 6# wjh6088


    XP没有自带PowerShell需要自己安装,多少年的老系统了,还不换成Win10吗
发表于 2019-12-24 09:07:35 | 显示全部楼层
回复 7# Batcher


    win10太大太卡 老电脑没法用。。。
发表于 2019-12-24 15:06:12 | 显示全部楼层
  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技术 +2 收起 理由
wxyz0001 + 1 乐于助人
wjh6088 + 1 谢谢,完美运行

查看全部评分

 楼主| 发表于 2019-12-29 00:36:49 | 显示全部楼层
回复 9# went
好多天了,没想到还有朋友能答复,非常感谢,完美运行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 13:31 , Processed in 0.018671 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表