我有一个制表符分隔的txt文件,我试图在每行的最后一列中找到值0,然后将该值从0重命名为K。这是我到目前为止提出的代码,但是我可以无法获取要更改的值。我在这里做什么错了?
ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=E:\psexport"
SET "destdir=E:\psexport"
SET "filename1=%sourcedir%\nk3.txt"
SET "outfile=%destdir%\nk4.txt"
(
FOR /f * IN ("%filename1%") DO (
SET "line=*"
SET "line=!line:0=K"
ECHO !line!
)
)>"%outfile%"
GOTO :EOF
`
答案 0 :(得分:0)
您正在使用bang,希望能看到百分比。另外,我不确定第二条陈述。
请参见下面的代码示例。在echo命令中,我正在调用line,将变量0替换为K。它包装在百分比中,因为整个表达式是我们要回显的变量。
ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=E:\psexport"
SET "destdir=E:\psexport"
SET "filename1=%sourcedir%\nk3.txt"
SET "outfile=%destdir%\nk4.txt"
(
FOR /f * IN ("%filename1%") DO (
SET "line=*"
ECHO %line:0=K%
)
)>"%outfile%"
GOTO :EOF
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=E:\psexport"
SET "destdir=E:\psexport"
SET "filename1=%sourcedir%\nk3.txt"
SET "outfile=%destdir%\nk4.txt"
(
FOR /f "usebackq delims=" %%a IN ("%filename1%") DO (
SET "line=%%a"
IF "!line:~-2!"==" 0" (
ECHO !line:~0,-2! K
) ELSE (
ECHO %%a
)
)
)>"%outfile%"
GOTO :EOF
for
语法要求使用metavariable
-我已经使用过%%a
-这是字母顺序且区分大小写的。
使用修饰符usebackq
是因为要读取的文件名带有引号。
delims=
表示没有定界符,因此整个文件行都传递到%%a
中。
要使用子字符串,我们需要将值传输到标准环境变量,然后测试所读取行的最后两个字符为0
,以使10
不会被修改。如果测试正确,请echo
从开头(字符0)到末尾的-2 个字符并附加K
,否则,请重新输入原始行。 / p>
您使用的set
语法将{em>每一个 0
替换为K
。