【发布时间】:2020-07-13 15:12:36
【问题描述】:
我的名字是 Syarz,我是编程新手。我想知道如何使用 cmd 或批处理文件从字符串中删除字符。
这是 data.txt 文件中的字符串:
test.rar:$rar5$16$b19108e5cf6a5dadaa0ff515f59c6df7$15$f7f4933a2a8f7aa43d7fc31e86c47e2b$8$307ef2987e735bec
在 data.txt 中运行命令或批处理文件后我想要这个
$rar5$16$b19108e5cf6a5dadaa0ff515f59c6df7$15$f7f4933a2a8f7aa43d7fc31e86c47e2b$8$307ef2987e735bec
我尝试了网站上提供的一些方法,但似乎没有一个对我有用。他们要么删除整个字符串,要么删除我不想删除的部分。
我已经尝试过的
1 -
more +1 "data.txt" > "data_NEW.txt"
2 -
@echo off
(
for /F usebackq^ skip^=1^ delims^=^ eol^= %%L in ("data.txt") do echo(%%L
) > "data_NEW.txt"
3-
@echo off
(
for /F "skip=1 delims=" %%L in ('findstr /N "^" "data.txt"') do (
set "LINE=%%L"
setlocal EnableDelayedExpansion
echo(!LINE:*:=!
endlocal
)
) > "data_NEW.txt"
4 -
@echo off
for /F %%C in ('find /C /V "" ^< "data.txt"') do set "COUNT=%%C"
setlocal EnableDelayedExpansion
(
for /L %%I in (1,1,%COUNT%) do (
set "LINE=" & set /P LINE=""
if %%I gtr 1 echo(!LINE!
)
) < "data.txt" > "data_NEW.txt"
endlocal
5 -
void chopN(char *str, size_t n)
{
assert(n != 0 && str != 0);
size_t len = strlen(str);
if (n > len)
return; // Or: n = len;
memmove(str, str+n, len - n + 1);
}
6 -
void chopN(char *str, size_t n) {
char *dest = str;
// find beginning watching out for rump `str`
while (*str && n--) {
str++;
}
// Copy byte by byte
while (*src) {
*dest++ = *src++;
}
*dest = '\0';
}
7 -
for /f %%a in (input.txt) do set "line=%%a"
set "line=%line:pub:04:=%"
set "line=%line::=%"
echo %line%
8 -
@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
只是想学点新东西。 谢谢大家。
【问题讨论】:
-
如果你想要cmd或者批处理文件,为什么要标记这个
PowerShell? -
不错的密码转储文件 btw... 在 Powershell 中:gc data.txt | % { $_.Split(':')[1] }
-
for /f "tokens=2 delims=:" %%a in (data.txt) do echo %%a? -
Select-String -Path C:\src\t\sstext.txt -Pattern '(.*):(.*)' | ForEach-Object { $_.Matches.Groups[2].Value }
-
for /f "tokens=2 delims=:" %%a in (data.txt) do echo %%a >> data1.txt应该可以工作(但会在每一行添加一个额外的空间)。或(for /f "tokens=2 delims=:" %%a in (data.txt) do echo %%a) > data1.txt来避免这种情况(并且对于大文件会更快)
标签: windows shell batch-file cmd command-line