0

文字列から特殊文字をバッチで置き換えようとしています。私はこれを試しました:

set filename=%filename:é=e%
set filename=%filename:è=e%

しかし、うまくいきません!

何らかの理由で、DOS はこれらの文字を正しく認識しません。スクリーンショットを次に示します (OUTPUT IN CSV はコードの一部ではないことに注意してください。表示するために、.csv にエコーされたものを投稿しただけです)。

(スクリーンショットを投稿するほどの評判ではありません...) ( http://i.imgur.com/dIFeBJz.png )

ええ、プログラム、ターミナル、および出力ファイルにさまざまな文字があります。アクセント付きの特殊文字をどうするかわかりません。最適なのは、文字列からすべてを削除する 1 行のコードであり、置き換える必要はありません。

何かのようなもの :

 set filename=%filename:À à Ä ä Â â É é È è Ë ë Ê ê Ì ì Ï ï Î î Ò ò Ö ö Ô ô Ù ù Ü ü Û û=%

それは単にそれらをすべて殺すだけであり、.csv ファイルに出力する前にこの行を入力します。問題は解決しますが、BATCHでその機能を手に入れることができません(.NETまたは他の言語で解決策を見たことがありますが、BATCHにはありません)

4

2 に答える 2

1

Batch は任意の Ascii 文字、つまりコードが 255 以下の文字を適切に管理できます。Batch コード自体も Ascii で記述する必要があるため、これは明らかです。

@echo off
set remove=áéíóúÜü
set string=Aaá Eeé Iií Ooó UuÜüú It Works!
for /F "tokens=1-26 delims=%remove%" %%a in ("%string%") do (
   set newString=%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z
)
echo "%newString%"

出力:

"Aa Ee Ii Oo Uu It Works!"

削除する文字がAscii でない場合(255 を超えるコード)、バッチ プログラムではこの問題を解決できません。

于 2013-08-14T17:55:41.240 に答える