Dapatkan output gema dan ganti backslash dengan forward slash

1

Saya memiliki potongan kode skrip batch yang berfungsi:

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

, tetapi dengan satu masalah:

itu menghasilkan garis miring terbalik tunggal! Lebih buruk lagi, program yang dipanggil dalam loop tidak memiliki opsi untuk menggunakan garis miring bukan garis miring terbalik!

Kode ini menghasilkan seperti ini ke file:

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

Apakah ada cara untuk mendapatkan output dari program yang dipanggil dalam loop, untuk menghasilkan garis miring bukan garis miring, dari sisi script?

Mike Warren
sumber
Bagaimana cara kerjanya dalam konteks ini? Saya tahu Anda bisa melakukannya %f:\=/%, tetapi untuk nilai apa yang akan saya atur f? Mengubah pernyataan paling dalam dari for loop menjadi sebagai berikut: gocyclo "%%G:\=/" >> %tmpfile% terutama tidak berhasil. Aku tidak mendapatkan apa-apa.
Mike Warren
Anda harus menyimpan output terlebih dahulu, memodifikasinya, lalu menulisnya ke file output.
DavidPostill

Jawaban:

2

Apakah ada cara untuk menghasilkan garis miring bukan garis miring

Ya, menggunakan Edit / Ganti Variabel .

Gunakan kode berikut:

@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

Bacaan lebih lanjut

DavidPostill
sumber
Dalam hal ini, Anda menulisnya ke file teks, disebut output.txt, dan kemudian menghapus file itu sesudahnya, kan?
Mike Warren
@MikeWarren Memang, menggunakannya sebagai file sementara, membacanya dan memodifikasi baris baca ...
DavidPostill