1

DOS を初めて使用するので、すべての "|" を置き換えるバッチ ファイルを作成しようとしています。"," で test1.txt、test2.txt というファイルに出力し、test1.csv、test2.csv というファイルに出力します。最初のファイルでは正常に機能しますが、2 番目の .csv ファイルでは "|" が保持されます。

これが私のコードです:

@echo off
setlocal enabledelayedexpansion

for %%a in (test*.txt) do (
set line=%%a
type "!line:|=","!" > %%~na.csv
)

ブロックを一度解析した後に "line" 変数が変更される可能性があるというスレッドを読みましたが、問題を修正する方法がわかりません ("type" の前に "call" などのいくつかの変更を試みましたが、それでも同じです)。

どんな助けでも素晴らしいでしょう。ありがとう !

4

1 に答える 1

1

編集済み:これらはここで機能します。

@echo off
setlocal enabledelayedexpansion
for %%a in (test*.txt) do (
  for /f "delims=" %%b in ('type "%%a" ') do (
   set "line=%%b"
   set "line=!line:|=,!"
   >> "%%~na.csv" echo !line!
  )
)

http://www.dostips.com/forum/viewtopic.php?f=3&t=3855の repl.bat というヘルパー バッチ ファイルを使用すると、空白行が保持され、より信頼性が高くなります。

@echo off
for %%a in (test*.txt) do type "%%a" | repl "\|" "," m > "%%~na.csv"
于 2013-08-18T06:15:31.117 に答える