Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于文档文本字符串重命名多个文件_Python_Windows_Batch File_Rename_File Rename - Fatal编程技术网

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

Python 基于文档文本字符串重命名多个文件,python,windows,batch-file,rename,file-rename,Python,Windows,Batch File,Rename,File Rename,我已经看到有一种叫做的东西,但是我想重命名的数据文件是相对保密的,因此,也许不合理的是,我对使用它持谨慎态度。此外,我不确定它是否允许我在重命名文件时以我希望的方式查找特定字符串。因此,我想知道是否有一种几乎同样好的替代方法,并且有某种方式确保所有事情都是保密的。如果没有,我愿意听取任何人使用批量重命名实用程序的经验。谢谢 编辑:我还应该注意,虽然我是编程新手,但我对基于编程的解决方案非常开放。我还应该注意,所有有问题的文件都是.html文件。 更新: 你喜欢这个工作吗 for file in

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

编辑:我还应该注意,虽然我是编程新手,但我对基于编程的解决方案非常开放。我还应该注意,所有有问题的文件都是.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()
目录中的文件的
:
f=fopen(文件“r”)
line=f.readLine();
while(行):
如果(line.strip()=“Name:”):
nextline=f.readLine().strip();
c=nextline.find(“”)
name=nextline[4:c]
命令行(将文件重命名为name)
打破
line=f.readLine()
在Python中运行良好,我还缺少什么吗

更新:示例html



[标题]
    
[数字]
[日期]
      
    


[信息]
    
      
姓名:
[姓名]


像老板一样使用powershell和cmd更改名称只需参考链接即可


阅读整页之前不要下结论。

对不起,你的问题不够清楚。在多次阅读您的问题后,我假设您需要一个方法(可能是Windows batch.bat文件),该方法:

  • 允许用户输入搜索字符串
  • 处理几个扩展名为.html的文件
  • 在每个文件中查找搜索字符串第一次匹配后出现在下一行的
    标记之间的值,并使用它重命名文件
下面的批处理文件执行此过程:

@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();
@如果(@code节==@Batch)@那么
@回音
设置/P“搜索=输入搜索字符串:”
对于/F“delims=“%%a in('dir/B/a-D*.html')do(
对于/F“delims=“%%b in('cscript//nologo//e:jscript“%~F0”“%%a”“)执行以下操作(
如果“%%b”neq“未找到”(
ECHO ren“%%a”“%%b”
)否则(
回显错误:在文件“%%a”中找不到名称
)
)
)
后藤:EOF
@结束
var file=new ActiveXObject(“Scripting.FileSystemObject”).OpenTextFile(WScript.Arguments.Item(0)),
search=WScript.CreateObject(“WScript.Shell”).Environment(“进程”)(“搜索”),
re=newregexp(search+“+\n.+(.+)”,”),结果;
if(result=re.exec(file.ReadAll())){
WScript.Stdout.WriteLine(结果[1]);
}否则{
WScript.Stdout.WriteLine(“NoNameFound”);
}
file.Close();
这是带有示例数据的输出:

C:\> test
Enter search string: <th style="width: 12em;">Name:</th>
ren "input.html" "[NAME]"
C:\>测试
输入搜索字符串:名称:
ren“input.html”“[NAME]”
请注意,此批处理文件只显示
ren
命令,但不执行它!您需要在
ren
之前删除
ECHO
部分才能执行它


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

这有一些有用的信息,但我认为我的问题有点复杂,我不确定是否有可能以这种方式解决。基本上,我希望windows在每个文件中搜索关键字并返回所有字符,然后在文件名中出现两个空格。
Total Commander
是一个文件管理器,具有非常有效的多重重命名工具。它可以使用正则表达式,一次性重命名整个树,并具有普通文本重命名功能。在我看来,作者是一个值得信赖的人,而且是一个功能齐全的共享软件。对于问题中的歧义,我深表歉意。你的答案似乎正是我想要的。在赏金文本中,我特别提到我正在寻找一个tkinter GUI来容纳代码,它的工作方式与我最初问题的更新中的Python代码类似。我可以看出,这可能没有遇到,但我完全开放的批量解决方案。其思想就是搜索每个文件,并为整个文件夹重命名该文件。也就是说,选中文件夹,搜索每个文件并替换其名称。我将如何执行上面的批处理命令?谢谢在包含*.html文件的同一文件夹中使用anyName.bat创建批处理文件。对于测试,打开命令行窗口,
cd
到该文件夹并运行批处理文件;如果您愿意,可以通过双击修改程序以执行。很抱歉,我不懂Python,但是如果您愿意,批处理文件可以通过弹出的GUI输入框读取搜索字符串。这看起来会很好地工作!我刚用ECHO试过,在没有ECHO的情况下试过之后,我会报告。每次运行时出现的一个问题是,它会从所有浏览的文档中删除html文档格式。当我在必须选择打开程序后尝试打开任何文档时,如果我在浏览器中打开它们,它只显示原始HTML,而不是HTML创建的样式。请注意,重命名使用放置在
标记之间的新名称,没有扩展名。如果数据中的名称没有.html扩展名,则必须在ren命令中插入此类扩展名:
ECHO ren“%%a”“%%b.html”
。这类细节不够清晰。。。