使用Windows命令行删除字符串中的某些字符

时间:2018-04-19 05:09:31

标签: batch-file cmd

我有一个包含字符串的文本文件:

pub: 
04:d6:b6:f2:98:ff:94:d8:3c:36:ad:5f:86:40:aa:
d1:5a:e1:87:5d:55:9d:ad:8b:2b:fc:18:e7:bb:47:
7f:9f:9a:62:c6:19:3a:9e:65:62:4e:5e:98:6d:db:
0e:7d:f9:22:a3:ca:cb:12:b2:ed:eb:14:0c:b3:31:
59:02:17:6d:6a

我需要从头开始删除04,并删除':'从字符之间打印出来,用一行代码打印出来:

d6b6f298ff94d83c36ad5f8640aad15ae1875d559dad8b2bfc18e7bb477f9f9a62c6193a9e65624e5e986ddb0e7df922a3cacb12b2edeb140cb3315902176d6a

如何使用Windows命令执行此操作?

2 个答案:

答案 0 :(得分:4)

非常简单:

@echo off
setlocal enabledelayedexpansion
set "first=true"
(for /f "eol=p delims=" %%a in (input.txt) do (
  set "line=%%a"
  if defined first (set "line=!line:~2!" & set "first=")
  <nul set /p ".=!line::=!"
))>output.txt

逐行读取输入文件 使用标志(first)检查第一行并删除前两个字符 删除冒号和
使用<nul set /p进行写操作而不换行。

编辑,因为在评论中结果显示,您的文件实际上只有一个长行。这会将处理方式更改为:

for /f %%a in (input.txt) do set "line=%%a"
set "line=%line:pub:04:=%"
set "line=%line::=%"
echo %line%

注意:变量只能容纳一定数量的数据,因此当该行超过此限制时,此apporach将失败。

答案 1 :(得分:1)

你的问题很混乱。你先说:&#34;我有一个文本文件,其中包含字符串:&#34; ,但示例数据有六行,可以视为六个字符串,所以在这一点上我们不知道真正的数据格式是什么。也许你在这里用六个部分写一条长线?

接下来,你说&#34;我需要从这个&#34; 的开头删除04,但如果数据 a {会发生什么? {1}}一开始?也许你想删除第一个元素,即使它不是Cursor cursor = rawQuery("select IdColumn, TextColumn from Comments where whereArgs ", new String[]{whereArgs}); adapter = new android.support.v4.widget.SimpleCursorAdapter(context, android.R.layout.two_line_list_item, cursor, new String[]{"IdColumn", "TextColumn"}, new int[]{android.R.id.text1, android.R.id.text2}, 0); listView.setAdapter(adapter); }

通过这种方式,我们必须假设几个点,以便尝试编写有效的解决方案。

下面的批处理文件用几行读取文件,删除第一行(即使它不包含04),然后删除第一个冒号分隔的元素(即使它不是04):

pub:

在此代码中,还有其他假设隐含在命令的工作方式中,例如不包含空格和感叹号的行。当然,如果真实数据文件的格式不同,该程序将失败......