早上好!
来自另一篇文章,我试图通过,但失败,我想问我的问题在一个单独的帖子。我需要做两件事:
EventLog_12345.txt
,我只想复制文件名包含EventLog
的文件。EventLog_12345.txt
,在这个文件中有一行如下所示: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文件始终是域的最后一部分。
添加到目前为止所做努力的信息
复制和粘贴-这实际上是工作的,但不检查文件是否已经存在:
@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)
发布于 2018-06-22 21:16:48
第一次
@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%"
第二名
findstr /I /M "vVariable" *_*.txt
处理包含findstr /I /M "vVariable" *_*.txt
的文件列表%%B
处拆分找到的名称/
转换为空格%%D
中的最后一个元素%%~nD
来形成新的名称:: 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!"
)
)
基于您的信息的示例输出
> SO_50982243.cmd
Ren "EventLog_12345.txt" "joblog_12345.txt"
如果输出看起来没问题,请删除ren前面的回显以真正重命名。
https://stackoverflow.com/questions/50982243
复制相似问题