我创建了用于从%N%
读取file
行的命令脚本。问题是当我处理文件的文本时,我无法从所有文本流中的任何位置删除"
。非常需要"
删除,因为如果文件的文本行有像"text"
这样的子字符串而text
有特殊的字符或更糟糕的脚本代码,那么脚本崩溃或工作方式不正确(包括脚本)控制由专门编写text
)的程序员捕获
如果我无法从文本流中删除"
,那么我只想确定file
(或它的第一个%N%
行,包括空行)包含至少一个"
字符
任何想法都值得赞赏,包括任何file
预处理。但主要目标是脚本速度。
for /f "skip=2 delims=" %%a in ('find /v /n "" "file" 2^>nul') do set "v=%%a"&call :v&if not errorlevel 1 goto FURTHER1
goto FURTHER2
:v
for /f "delims=[]" %%a in ("%v%") do set "line%%a=%v:*]=%"&if %%a lss %N% (exit /b 1) else exit /b 0
答案 0 :(得分:1)
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q39558311.txt"
SET "tempfilename1=%sourcedir%\q39558311#.txt"
>"%tempfilename1%" ECHO("
SET /a linefound=0
FOR /f "tokens=1 delims=:" %%a IN ('findstr /n /g:"%tempfilename1%" "%filename1%"') DO (
IF %%a gtr 2 SET /a linefound=%%a&GOTO report
)
:report
ECHO quote found AT line %linefound%
DEL "%tempfilename1%"
GOTO :EOF
您需要更改sourcedir
和filename1
的设置以适合您的具体情况。
tempfile1
可以是任何名称 - 它只是一个临时文件;为方便起见,我选择了这个特定名称。
我使用了一个名为q39558311.txt
的文件,其中包含一些虚拟数据供我测试。
基本上,在单行* tempfile1上创建一个包含单引号的文件,然后使用带有findstr
选项的/g:filename
来读取要查找的目标字符串。当findstr
找到该行时,会对其进行编号并输出line_number:line found
。使用:
作为分隔符,此行的标记1是行号。
我不明白为什么您在代码中使用了skip=number
。您是否打算跳过测试目标文件的前两行?
IF %%a gtr 2
测试找到的行号。如果它大于2,则设置变量linefound
并终止for
循环。
我选择将linefound
初始化为零。如果在第2行中没有找到"
,它将保持为零。同样,你可以清除它然后它将被定义(第一行找到 - 引用 - 大于-2的值)并且没有找到未找到的定义。
答案 1 :(得分:0)
我只能识别"
,但不能删除。等待你的建议!
>nul 2>&1 findstr /m \" "file"
if not errorlevel 1 echo double quote found!