我已经看到有一些名为Bulk Rename Utility的东西,但是我想重新命名的数据文件是相对保密的,所以也许是不合理的,我对使用它很谨慎。 同样,我也不确定它会允许我以重新命名文件的方式寻找特定的string。 因此,我想知道是否有一个几乎一样好的替代方法,并有一定的方法来确保一切都是保密的。 如果不是的话,我会开放的听取任何人有关批量重命名实用程序的经验。 谢谢!
编辑:我也应该注意到,虽然我是一个新手,当谈到编程我很开放基于编程的解决scheme。 我也应该注意到,所有有问题的文件都是.html文件。
更新:
会这样的工作吗?
for file in directory: f = fopen(file, 'r') line = f.readLine(); while(line): if(line.strip() == '<th style="width: 12em;">Name:</th>'): nextline = f.readLine().strip(); c = nextline.find("</td>") name = nextline[4:c] os.commandline(rename file to name) break line = f.readLine()
有什么我错过,使这个运行良好的Python?
更新:示例html
<html> <body> <h1 style="text-align: right;">[TITLE]</h1> <div style="font-size: 12pt;"> <div style="float: left;">[NUMBER]</div> <div style="float: right;">[DATE]</div> <div style="clear: both;" /> </div> <hr /> <h3>[INFO]</h3> <table class="text" cellspacing="0" cellpadding="0" border="0"> <tr> <th style="width: 12em;">Name:</th> <td>[NAME]</td> </tr> </body> </html>
对不起,你的问题还不够清楚。 在多次阅读您的问题后,我假定您需要一个方法(可能是Windows批处理.bat文件):
<td>
和</td>
标签之间的值,该标签在搜索字符串的第一个匹配之后出现在下一行,并用它来重命名该文件。 下面的批处理文件做这样一个过程:
@if (@CodeSection == @Batch) @then @echo off set /P "search=Enter search string: " for /F "delims=" %%a in ('dir /B /AD *.html') do ( for /F "delims=" %%b in ('cscript //nologo //e:jscript "%~F0" "%%a"') do ( if "%%b" neq "NoNameFound" ( ECHO ren "%%a" "%%b" ) else ( echo ERROR: No name found in file "%%a" ) ) ) goto :EOF @end var file = new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments.Item(0)), search = WScript.CreateObject("WScript.Shell").Environment("Process")("search"), re = new RegExp(search+".+\n.+<td>(.+)<\/td>",""), result; if (result = re.exec(file.ReadAll())) { WScript.Stdout.WriteLine(result[1]); } else { WScript.Stdout.WriteLine("NoNameFound"); } file.Close();
这是您的示例数据的输出:
C:\> test Enter search string: <th style="width: 12em;">Name:</th> ren "input.html" "[NAME]"
请注意,这个批处理文件只显示 ren
命令,但它不会执行它! 您必须在ren
之前删除ECHO
部分才能执行它。
如果我遗漏了一些东西,请输入一个修改我的规格的评论。
使用PowerShell和cmd像老板一样更改名称只是引用链接
阅读整个页面之前,不要总结。