【发布时间】:2022-01-10 08:22:42
【问题描述】:
在批处理脚本中,我想在 a.txt 中查找内容 在 a.txt 我有更多记录如何检查记录是否包含 nonaci 并写入 b.txt ? 我有中间字符串的代码,但也失败了
@echo off
setlocal enableDelayedExpansion
SETLOCAL
set _char= "123456789~abcdef0"
SET /A _startchar=1
SET /A _length=1
for /L %%a in (32,1,125) do (
cmd /c exit %%a
echo !=exitcodeAscii!
if "!=exitcodeAscii!" EQU "%_char%" echo -- %%a
CALL SET _substring=!!_char:!_startchar!,2!!
ECHO !_substring! --- !_startchar!
SET /A _startchar=!_startchar! + 1
)
【问题讨论】:
-
ascii 退出代码永远不会等于变量
_char。你想用那行代码来完成什么?以下代码行不正确:CALL SET _substring=!!_char:!_startchar!,2!!。这应该使用双百分号将变量正确扩展为值,并且您缺少波浪号。CALL SET _substring=%%_char:~!_startchar!,2%% -
嗨@Squashman,谢谢,但我在 (32,1,125) do ( cmd /c exit %%a echo !=exitcodeAscii! if "!= exitcodeAscii!" EQU "%_char%" echo -- %%a CALL SET _substring=%%_char:~!_startchar!,2%% ECHO !_substring!--- !_startchar!SET /A _startchar=!_startchar!+ 1 ) 但是当我回显它是空间时它失败了 CALL SET _substring=%%_char:~!_startchar!,2%% ECHO !_substring! --- !_startchar!
-
您的问题的代码更新应该放在您的问题中。请edit您的问题与您的新代码。无论如何,我并没有试图解决你的问题,我只是让人们注意我看到的一些代码错误。我给你的代码确实解决了你遇到的语法问题。一旦
startchar变量大于您尝试解析的字符串的长度,代码肯定会回显一个空格。在这种情况下,_char变量只有 20 个字符。所以在那之后子字符串将显示一个空格。这是非常基本的逻辑,您可以自己弄清楚。
标签: batch-file cmd script