首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >批量查找、复制和重命名

批量查找、复制和重命名
EN

Stack Overflow用户
提问于 2018-06-22 06:51:58
回答 1查看 1.3K关注 0票数 0

早上好!

来自另一篇文章,我试图通过,但失败,我想问我的问题在一个单独的帖子。我需要做两件事:

  1. 将文件名中包含特定字符串的所有文件从一个目录复制到另一个目录,但前提是该文件不存在于该目标目录中。文件名可能类似于EventLog_12345.txt,我只想复制文件名包含EventLog的文件。
  2. 在一组文件中,标识每个.txt文件中的某个字符串。此字符串指示包含正在查找的字符串的行。我想了解这行的末尾,并将.txt文件保存为一个具有新名称的新.txt文件,该文件基于在该行末尾找到的字符串。示例:我的文件是EventLog_12345.txt,在这个文件中有一行如下所示:
代码语言:javascript
运行
复制
2018-06-22 08:21:19 0133 LET vVariable                  = 'h**ps://somedomain.com/test/1/2/4/jobs/joblog.XML'

指示行的字符串为vVariable。我想在本例中的新文件名中使用的字符串是joblog.xml。该文件应该存储为一个新的.txt文件,其名称为: joblog_12345.txt。请注意,行的长度可能会不同;域字符串的长度也会不同;XML的名称也会不同。常量是,我总是希望拥有XML文件的名称,XML文件始终是域的最后一部分。

添加到目前为止所做努力的信息

复制和粘贴-这实际上是工作的,但不检查文件是否已经存在:

代码语言:javascript
运行
复制
@echo off  
for /f "delims=" %%a in (  
'xcopy /l /e /y "\\myPath\*EventLog*.txt" "D:\Target\" ^|find "EventLog"'
) do copy "%%a" "D:\Target\"    

对于字符串的识别,然后作为保存,我实际上没有任何东西。我基本上希望我能以某种方式调整这里提供的解决方案:(Rename text files based on multiple strings in their contents)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 21:16:48

第一次

代码语言:javascript
运行
复制
@echo off
Set "Target=D:\Target\"
for /f "delims=" %%A in (  
  'xcopy /l /e /y "\\myPath\*EventLog*.txt" "%Target%" '
) do if not exist "%Target%%%~nxA" copy "%%A" "%Target%"

第二名

  • 在vVariable中使用findstr /I /M "vVariable" *_*.txt处理包含findstr /I /M "vVariable" *_*.txt的文件列表
  • 在下划线%%B处拆分找到的名称
  • 搜索文件以获取行,并将行中的所有/转换为空格
  • 获取%%D中的最后一个元素
  • 使用没有扩展的%%~nD来形成新的名称
代码语言:javascript
运行
复制
:: Q:\Test\2018\05\22\SO_50982243.cmd
@Echo off & Setlocal EnableDelayedExpansion
For /f "delims=" %%A in ('findstr /I /M "vVariable" *_*.txt ') Do (
    For /f "tokens=2delims=_" %%B in ("%%~nA") Do (
        For /f "delims=" %%C in ('findstr /I "vVariable" ^<"%%A"') Do Set "Line=%%C"
        Set "Line=!Line:/= !"
        For %%D in (!Line!) Do Set "NewName=%%~nD_%%B%%~xA"
        Echo Ren "%%~A" "!NewName!"
    )
)

基于您的信息的示例输出

代码语言:javascript
运行
复制
> SO_50982243.cmd
Ren "EventLog_12345.txt" "joblog_12345.txt"

如果输出看起来没问题,请删除ren前面的回显以真正重命名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50982243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档