基于文档文本字符串重命名多个文件

2024-06-02 10:41:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看到了一种叫做Bulk Rename Utility的东西,但是我想重命名的数据文件是相对保密的,因此,也许不合理,我对使用它持谨慎态度。同样,我不确定它是否允许我在重命名文件时以我希望的方式查找特定的字符串。因此,我想知道是否有另一种方法几乎同样好,并且有某种方法可以确保一切都是保密的。如果不是的话,我愿意听听任何人使用批量重命名实用程序的经验。谢谢!在

编辑:我还应该注意到,虽然我是编程新手,但我对基于编程的解决方案非常开放。我还应该注意到,所有有问题的文件都是.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>


Tags: 文件方法divreadlinestylehtml编程line
2条回答

像老板一样使用powershell和cmd更改名称只需引用链接

http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways-to-rename-multiple-files/

在读完整页之前不要下结论。在

对不起,你的问题不够清楚。在读了几遍你的问题之后,我假设你想要一个方法(可能是一个Windows批处理.bat文件):

  • 允许用户输入搜索字符串。在
  • 处理几个扩展名为.html的文件。在
  • 在每个文件中查找在搜索字符串的第一个匹配项之后的下一行中出现的<td></td>标记之间的值,并使用它重命名文件。在

下面的批处理文件执行这样的处理:

@if (@CodeSection == @Batch) @then

@echo off

set /P "search=Enter search string: "
for /F "delims=" %%a in ('dir /B /A-D *.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();

以下是示例数据的输出:

^{pr2}$

注意,这个批处理文件只显示ren命令,但它不执行它!您需要删除ECHO之前的ECHO部分才能执行它。在

如果我漏掉了什么,请输入一个对我的规范进行修改的注释。在

相关问题 更多 >