batch-file - 用txt中特定位置的变量批量替换数据
问题描述
我有两个目标。
首先,我需要找到一些 16 字符的字符串,专门位于符号 之后@
,可以在我的 txt 文件中的某处找到,并将其保存到一个名为v1
. 即使可以有几个“@”,重要的是我得到第一个“@”,而第一个“@”可以随机出现在任何地方。其次,我需要v1
用另一个名为v2
. v1
和都是v2
16 个字符长。
我的文件在d:\msdos\testing.txt
,它有大约 3000 行甚至更多(见下面的例子)。用户无法轻松访问其内容。“删除和替换”的所有过程都应该自动完成。另一个观察是周围的字符v2
(替换后)必须保持不变。顺便说一句,搜索字符“@”不在第一行。事实上,它可以在文件中的任何位置。
adflkjsdf@ 12346dsf88dfsd16 00vczxv0012554xzcxcz 54df 6d5s4f s5df4s fdsfsfsfsfsewfwefwfwfewfwƒÁ♣)é=E@tF¸ð♣·@t/ó=╣@uæQjèDó♣ÿÿYð·@t|,óÿÿYëû4^ü^ü╣Ë‹WüöÂuÊWüëøƒâðÓ×ú0è♫îôÿÿ_øCD. üû0.♣Úè♫õÿÿÆ·@ð] ^Ã×ÐèÛøÿÿÀtÅÂðùèŽôÿÿð╣èGü╣ÿÿè]^ËGü¨íƒàð,9ê‡ß=E@t♫73¸♫ð·@t3ó=ð·@tQRjèAòÿÿZYë¿»♣4^ü‹Gü¨t~ƒàð,9ê╣wt=0ôÿÿZYÈÁèÈ1ÿ)Ѓ×ÿ! Ó73▓Ãa▓ÃaÿÿÿƒÀ0U)Âw.÷ƒÅëT.üz|ú0ðèÿÿcd9f·@ð]_^ÃÆ·@d2cji▄♫♫f♣♫♫5b577i▄868dda11f81f72655a55ffa3fa7ce3a2c00cf♣w♣1T5d045opi4336578╣5d╣9d2▓╣╣▄f♣▄13120d694ss2014 ╣5ja♣♥1eFÃ♣╣9♪5♪eae╣♣5e♣eTab5b5▓777d2IUd04♪5♪8cd9d215d24♫b570♪22637d2ji▄7fd0458cd9fc702263a9fe6b7d73f1314♫bOIU¨&♫765d╣22637b5e6b7d73d♫80ji▄j513120da♣eTÃa§♥694♫O¶§ ♥I§♥♥Q61G67D215▓▓B57022637♣D2♫15▓AB5D╣9D╣9D╣9D╣CPO ♣W♣1A1B5L5B5O987Wlkjeee879d2▓7D2╣▄╣╣╣1♥5▓24♫♥B57022637D 9♣ 86d215d21OIE98222╣tr2♪4♫b▓▓▓570226ƒÀÜ‹0‹ÃƒÀsçfpro79g235flks8971IU3120dÃ
第一部分我做得很好,如下:
@echo off
SetLocal EnableDelayedExpansion
set v2=0000000022200000
set x=d:\msdos\testing.txt
for /f "delims=@ tokens=1*" %%A in (%x%) do set v0=%%B
set v1=%v0:~0,16%
echo %v1% & REM 12346dsf88dfsd16
我怎样才能实现第二个目标?
解决方案
批处理不是解决此问题的正确工具。可以使用 REGEX 来完成,但批处理没有实现。不过,使用 dbenhams 很棒的jrepl.bat会很容易:
@echo off
SetLocal
set "v1=@[a-zA-Z0-9]{16}"" & REM this is a REGEX search pattern
set "v2=@0000000022200000" & REM this is the replacement string
call jrepl "%v1%" "%v2%" /F testing.txt /M /O -
有关jrepl.bat /?
使用信息,请参阅。简而言之:
jrepl <searchstring> <replacementstring> <switches>
where/F <inputfile>
给出要更改的文件,
/M
保留原始行结尾(这里可能不需要,但可以肯定......)
/O -
用结果覆盖 inputfile。代替-
你也可以给一个文件名 ( /O testing.new
)
注意:这将替换文件中匹配搜索模式的每个字符串。
推荐阅读
- ros - Rosplay "Bag time" 在 rosrecord 后 20 秒开始
- r - R 和“plm”包:如何使用 lapply 循环遍历“pdata.frame”对象的列
- javascript - 在 data-href URL 中使用哈希时,Facebook 审核链接不显示
- html - 在不同的视口上保持列高
- jquery - 我们如何在剑道网格的动态添加字段中使用转义?
- javascript - 无法使用 angular2 正确显示引导轮播数据
- azure - 如何在 Azure B2C 中的注册和登录策略中添加验证码
- mysql - MySQL UPDATE 与 LEFT JOINS
- python-3.x - I want to get variable values from jenkins in my python code for desired capabilities
- r - 在闪亮的应用程序中刷新数据