2009-07-21 8 views
1

私は大きなバッチファイルの一部として、次のWindowsバッチコマンドを持っている:あなたは、それがデータベースのビルドプロセス中に実行することができるように、それは一つに特定のディレクトリ内のすべてのSQLスクリプトを結合見ることができるようにWindowsのバッチスクリプトでリダイレクトファイルのファイルエンコーディングを変更するにはどうすればよいですか?

type *.sql > dbScript.txt 
ren dbScript.txt dbScript.sql 

私の問題は、SQLスクリプトファイルの1つにANSI以外の文字がありますが、dbScript.txt(およびその後のdbScript.sql)がANSIとしてエンコードされていることです。

出力ファイルのエンコーディングをUTF-8に変更するにはどうすればよいですか?

答えて

3

出力ファイルを変換するには、iconvのようなプログラムを実行する必要があります。 cmdは、出力コードとしてOEMコードページ(デフォルトでは)またはUTF-16(/u引数がcmd)をサポートしています。

typeファイルを転送して出力をリダイレクトするためにエンコーディングの問題が発生した場合は、エンコーディングを保持する必要がある次のような方法も試してみることができます(出力せずにテキストをもう一度書き込む):

setlocal enableextensions enabledelayedexpansion 
set LIST=NUL 
for %%f in (*.sql) do set LIST=!LIST!+%%f 
copy %LIST% dbScript.sql 
endlocal 

これは、最初のSQLファイルのプラスで区切られたリストを生成し、それらを連結するためにコピーを使用します。

+0

「copy!LIST! dbScript.sql' – akf

+0

する必要はありません。その場合、直ちに拡張することは害ではない点にあります。しかし、はい、それはうまくいくでしょう。 'for'ループの' set'コマンドは!LIST!を使用するだけです。私たちはそこで遅れて展開する必要があるからです。 – Joey

2

copyを試しましたか?

copy *.sql dbscript.sql 
関連する問題