![](/img/trans.png)
[英]Getting the leaf from a path string in Windows Command Prompt/batch file
[英]How to remove certain characters from a string using command prompt or batch file?
我的名字是 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
只是想學習一些新的東西。 謝謝大家。
我知道您要求批處理,但我沒有提供批處理答案,所以我會幫助您進行批處理的人回復。
這是 PowerShell 的一種簡單方法:
$f = Get-Content data.txt
$out = 'data2.txt'
$f | ForEach-Object {
$_.Split(':')[1]
} | Out-File $out -Append
好吧,您的許多嘗試——#1 到#4——似乎都刪除了輸入文本的第一行。 # 7 和 # 8 可能更接近您想要的,但這些方法不適合您的樣本數據。 而#5和#6絕對不是批處理文件。
要在某個字符處拆分文本,即您的情況下的冒號,只需使用for /F
循環:
for /F "tokens=1,2 delims=:" %%I in (data.txt) do (
echo 1st token: %%I
echo 2nd token: %%J
)
如果第二部分可能包含自己想要保留的冒號,則需要將標記2
更改為*
,這意味着“所有其余部分”:
for /F "tokens=1,* delims=:" %%I in (data.txt) do (
echo 1st token: %%I
echo remainder: %%J
)
考慮到for /F
循環將多個相鄰的分隔for /F
為一個,因此像abc::def
這樣的字符串將被拆分為部分abc
和def
。 另請注意,前導分隔符將被刪除,因此像:abc::def
這樣的字符串也將被拆分為部分abc
和def
。 換句話說, for /F
不返回空標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.