标题: [文件操作] 批处理怎样根据文本列表重命名论文文件(列表内容包含原文件名) [打印本页]
作者: wjh6088 时间: 2019-12-18 10:30 标题: 批处理怎样根据文本列表重命名论文文件(列表内容包含原文件名)
写论文需要下载多个论文参考,下载的文件名如下,保存在同一文件夹下- 自主可控环境下三维海量态势显示优化方法.pdf
- 机载CPU板硬件故障诊断平台的设计研究.pdf
- 计算机硬件常见故障及维修技巧实践分析.pdf
- 基于OpenSPARC T1的浮点运算单元微架构的研究.pdf
复制代码
导出文件的参考文献包含详细的作者及日期等信息如下- [1] 赵祥师,汪浩,乔兵克等.机载CPU板硬件故障诊断平台的设计研究[J].数字通信世界,2019,(5):149,73.DOI:10.3969/J.ISSN.1672-7274.2019.05.119.
- [2]王世雄.计算机硬件常见故障及维修技巧实践分析[J].数字化用户,2019,25(2):162.
- [3] 占伟伟,李坪泽,王辉等.自主可控环境下三维海量态势显示优化方法[J].指挥信息系统与技术,2019,10(2):80-84.DOI:10.15908/j.cnki.cist.2019.02.015.
- [4] 张若愚,谢龙.基于OpenSPARC T1的浮点运算单元微架构的研究[J].集成电路应用,2019,36(2):15-17,21.DOI:10.19339/j.issn.1674-2583.2019.02.003.
复制代码
现在需要依次把下载的pdf文件改为参考文献格式的文件名,如- 计算机硬件常见故障及维修技巧实践分析.pdf
- 改为
- 王世雄.计算机硬件常见故障及维修技巧实践分析[J].数字化用户,2019,25(2):162.
复制代码
根据参考文献txt中的内容改名,如改名失败,有提示信息,其中文件的排列不一定按顺序,/等不能用在文件名中的符号可以改为另一个符号代替,个人水平有限,求助高手们,谢谢了
作者: terse 时间: 2019-12-18 13:57
看你给出的 可在参考文献txt内容中 按PDF文件名搜索,但实际运行中不确定是否会有错误搜索
作者: WHY 时间: 2019-12-19 16:47
本帖最后由 WHY 于 2019-12-20 16:29 编辑
- $path = 'E:\Test\'; #存放pdf文件的目录路径
- $arr = gc -Literal ($path + '参考文献.txt') -ReadCount 0;
- $reg = '[' + ([IO.Path]::GetInvalidFileNameChars() -join '').Replace('\','\\') + ']';
- forEach( $f In (dir -Literal $path -filter *.pdf | ?{$_ -is [IO.FileInfo]}) ){
- $name = [regex]::Escape($f.BaseName); #转义特殊字符
- if( $m = $arr -match $name ){
- $newFile = $m[0].Trim() -replace $reg, ''; #删除非法文件名字符
- $newFile = $path + $newFile + $f.Extension;
- move -Literal $f.fullName -Dest $newFile -Force -WhatIf;
- }
- }
复制代码
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”执行操作“移动文件”。
作者: wjh6088 时间: 2019-12-20 09:11
回复 3# WHY
非常感谢,这个代码怎么运行,感觉不是bat文件,运行不了 :L
作者: Batcher 时间: 2019-12-20 10:04
回复 4# wjh6088
PowerShell脚本的执行方法:
http://bbs.bathome.net/thread-31071-1-1.html
作者: wjh6088 时间: 2019-12-20 10:14
本帖最后由 wjh6088 于 2019-12-20 10:23 编辑
回复 5# Batcher
winxp系统提示如下:- Microsoft Windows XP [版本 5.1.2600]
- (C) 版权所有 1985-2001 Microsoft Corp.
-
- C:\Documents and Settings\Administrator>powershell
- 'powershell' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
-
- C:\Documents and Settings\Administrator>powershell
- 'powershell' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
-
- C:\Documents and Settings\Administrator>
复制代码
另外我觉得for命令比较容易理解,思路是dir目录下的pdf,然后每一个pdf依次在参考文献.txt中查找,如果某一行的文本包含现在的pdf文件名,就更名。
作者: Batcher 时间: 2019-12-20 13:45
回复 6# wjh6088
XP没有自带PowerShell需要自己安装,多少年的老系统了,还不换成Win10吗
作者: kswdiy 时间: 2019-12-24 09:07
回复 7# Batcher
win10太大太卡 老电脑没法用。。。
作者: went 时间: 2019-12-24 15:06
- @echo off
- for /f "delims=" %%i in ('dir /s /b *.pdf') do (
- call :renPDF "%%~i"
- )
- echo 重命名完成
- pause&exit
-
- :renPDF
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in (pdfInfo.txt) do (
- set "line=%%i"
- set "newLine=!line:%~n1=!"
- if not "!newLine!"=="!line!" (
- echo 查找PDF: "%~n1"
- echo 找到TXT: "!line!"
- set "line=!line::=.!"
- set "line=!line:/=#!"
- echo 执行重命名:"%~1" --^> "!line!"
- rename "%~1" "!line!"
- echo ------------------------------------------------------------
- setlocal disabledelayedexpansion
- goto :eof
- )
- )
- setlocal disabledelayedexpansion
- echo TXT未找到:"%~nx1"
- echo ------------------------------------------------------------
- goto :eof
复制代码
bat,pdf,pdfInfo.txt放到同一文件夹
作者: wjh6088 时间: 2019-12-29 00:36
回复 9# went
好多天了,没想到还有朋友能答复,非常感谢,完美运行。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |