在Windows批处理脚本中使用printf写入带有特殊字符的行

问题描述 投票:0回答:1

我有一个简单的需要在 Windows 批处理脚本中执行此操作:

set getlock=C:\getlock.awk
if exist %getlock% del %getlock%

echo /^^uq:/ ^&^& /updsync/ {>>%getlock%
echo     printf ("%s^\n", $2)>>%getlock%
echo }>>%getlock%`

并希望生成的文件如下所示:

/^uq:/ && /updsync/ {
    printf ("%s\n", $2)
} 

但是,批处理脚本在“echo printf”行上失败;虽然我认为我已经转义了所有必要的特殊字符?

我尝试了 printf 行的许多不同变体。

windows scripting printf
1个回答
0
投票

当我尝试在 Windows 10 中使用您的批处理文件时,得到了与您相同的结果,即缺少

printf
的行。然而,这个answer批量字符转义

百分号 %

% 可以转义为 %% – “在双引号字符串中可能并不总是需要[转义],只需尝试”

虽然它是在双引号字符串中,但我做了一个更改,即将“%s”替换为“%%s”,并且还更改了“^” “,所以现在是

echo     printf ("%%s\n", $2)>>%getlock%

运行批处理文件现在会产生以下输出文件:

/^uq:/ && /updsync/ {
    printf ("%s\n", $2)
}

这是您所要求的。

© www.soinside.com 2019 - 2024. All rights reserved.