获取回显输出并将反斜杠替换为正斜杠


1

我有一个有效的批处理脚本代码片段:

echo %tmpfile%
for /R %1 %%G in (*.go) DO (
    echo %%G | findstr /i "test mock" || (
        rem filter out "test" files
        gocyclo "%%G" >> %tmpfile%
    )
)

,但有一个问题:

它输出单个反斜杠!更糟糕的是,循环被调用的程序没有选择使用正斜杠而不是反斜杠!

代码将这样输出到文件:

2 utilities ValArrToPointerArr C:\Users\mwarren\Desktop\apiserver_sdk\utilities\utilities.go:178:1

有没有一种方法可以从脚本方面获取在循环中调用的程序的输出,以输出正斜杠而不是反斜杠?



在这种情况下如何运作?我知道您可以做到%f:\=/%,但是我要设定什么值f?将for循环的最内层语句更改为以下内容: gocyclo "%%G:\=/" >> %tmpfile% 特别是没有用。我什么也没回来。
Mike Warren

您必须先存储输出,对其进行修改,然后将其写入输出文件。
DavidPostill

Answers:


2

有没有办法输出正斜杠而不是反斜杠

是的,使用Variable Edit / Replace

使用以下代码:

@echo off
setlocal enabledelayedexpansion
echo %tmpfile%
for /R %1 %%G in (*.go) DO (
  echo %%G | findstr /i "test mock" || (
    rem filter out "test" files
    gocyclo "%%G" >> output.txt
    rem replace \ with /
    for /f "tokens=*" %%i in ('type output.txt') do (
      set line=%%i
      set newline=!line:\=/!
      echo !newline!>>%tmpfile%
      )
   del /q output
   )
)
endlocal

进一步阅读


在这种情况下,您要将其写入一个名为的文本文件,output.txt然后再删除该文件,对吗?
Mike Warren

@MikeWarren实际上,将其用作临时文件,读取了该文件并修改了读取的行……
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.