【发布时间】:2018-09-11 20:03:36
【问题描述】:
我需要做一件非常简单的事情:用一个框架替换另一个框架。这必须通过 CMD 批处理文件完成(对于 Windows 7)。被替换的帧可以在txt文件行中的任意位置(也可以在多行中)。
问题是要替换的框架包含“:”和“!”人物。我对批处理文件不是很熟练(委婉地说),尽管我花了几个小时专门来了解这个特定问题。对我来说看起来很复杂。最后,一次偶然的机会,我忽略了这个问题,但是......我觉得我这样做是野蛮的。
应该替换的带有框架的实际行是例如:
"21:12:45 WARNING: No video signal present!"
应该替换的框架是:
"WARNING: No video signal present!"
它应该被替换的框架是:
"Recognition suspended"
我找到了这个代码:https://www.computerhope.com/forum/index.php?topic=41188.0
它工作正常,除了不能使用“!”如我所见,转义字符“^”永远不会起作用。但我注意到虽然它不能正常工作 - 它修剪了感叹号。以下是 (b) 之前和 (a) 之后的真实字符串:
(b)20:42:18 WARNING: No video signal present!
(a)20:42:18 WARNING: No video signal present
所以我在代码中添加了另外 2 行代码,这样就完成了。整个代码现在是:
@echo off
setlocal enabledelayedexpansion
set txtfile=D:\wfc\testlib\test.txt
set newfile=D:\wfc\testlib\new_test.txt
if exist "%newfile%" del /f /q "%newfile%"
for /f "tokens=*" %%a in (%txtfile%) do (
set newline=%%a
set newline=!newline:No video signal present!=!
set newline=!newline:No video signal present=!
set newline=!newline:WARNING:=Suspend recognition!
echo !newline! >> %newfile%
)
第一个关键行剪切“!”, 第二行用任何内容替换“没有视频信号”(修剪它), 第三行将其余的“警告:”替换为理想的“暂停识别”。
最后我有:
(b)20:42:18 WARNING: No video signal present!
(a)20:42:18 Suspend recognition
我觉得这可以优雅地完成。此外,我不确定我的方式是否由于某种原因(数据损坏等)不危险。请帮忙。
【问题讨论】:
标签: batch-file cmd windows-7