使用批处理文件中编写的代码在命令控制台中支付文本文件的某些字符串

时间:2017-10-23 17:54:44

标签: batch-file

我遇到了一个具体的问题。我的目标是使用 \ w 作为第1个参赛,名称为第2个,数字为第3个,实现人名和姓名的输入; 并且 \ r 游行作为第一个参数,在屏幕上查找并显示我刚刚输入的人的姓名作为 \ r 之后的第二个参数。 我的批处理文件名是database.bat 例如,当我输入
database \w Peter.Parker +79342342 textfile完全接受它
但是当我想让Peter.Parker的号码进入时

database  \r Peter.Parker

它没有成功。 主要代码

@echo off
set "BUILDMODE=%1"
set "FIO=%2"
if "%BUILDMODE%"=="\w" (
    echo %2 >>"C:\Users\user\Desktop\in.txt"^
    echo %3 >>"C:\Users\user\Desktop\in.txt"
)

if "%BUILDMODE%" == "\r" (
set A 
set B
set C
@echo off
 for /f "tokens=2,3" %%A in ("C:\Users\user\Desktop\in.txt") do ( if "%%A"=="%FIO%" (echo %B%))

你能指出我做错了吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中所述。您的代码在输出中回显了echo这个词。此外,您没有使用正确的令牌,还需要使用USEBACKQ选项,因为引用了文件名的路径。您还错误地回显了%% B变量。你有%B%。我个人不会使用反斜杠作为选项。几乎所有应用程序的标准都是使用正斜杠(/ r / w)。

无论如何,您的代码已修复并经过测试。

@echo off
set "BUILDMODE=%1"
set "FIO=%2"
if "%BUILDMODE%"=="\w" (
    >>"C:\Users\%username%\Desktop\in.txt" echo %2 %3
)

if "%BUILDMODE%"=="\r" (
    for /f "usebackq tokens=1,2 delims= " %%A in ("C:\Users\%username%\Desktop\in.txt") do (
        if "%%A"=="%FIO%" echo %%B
    )
)