2017-02-03 14 views
0

テキストファイルにあるファイルのリストを削除しようとしています。 私は基本的にこれをやろうとしている:CMD/Batch - ファイル名にUTF-8文字を含むファイルを削除する(例:日本語、中国語)

del 二月.mp3 /f 

原因でUTF-8文字で動作するようには思えません。私はたくさんの周りを検索し、これを回避する方法を見つけていない。 誰でもこれに対応していますか?

私はそれらのファイルのテキストファイルリストを使用してフォルダから10,000以上のファイルを削除しようとしています。各ファイルには名前に日本語の文字が含まれています。

ありがとうございました:)

+3

'rm'はWindowsのバッチファイルの標準コマンドではありませんが、あなたの質問では報告していない代替環境がありますか? – Compo

+1

BATファイルの作成時に、エディタがUTF8エンコーディングを使用していることを確認してください。あるいは、 'dir/x'で得ることができるファイルの短い名前を使用してください。 –

+0

私はrmの代わりにdelを書くつもりです。 私のバットファイルがUTF-8エンコーディングであることを確認しました。 私はリストから10,000以上のファイルを削除しようとしていますが、そのファイルには日本語の文字が含まれているため、何らかのスクリプトを使用してそれを行う必要があります。 – Vladz0r

答えて

1

をバッチスクリプトとCMD /バッチは、その

  • 両方batスクリプトを提供UCS-2 Unicode subsetからファイル名で作業することが可能であることをサンプルテキストファイルのショーに続いてtxtファイル一覧UTF-8 character encodingに保存され、
  • スクリプトがUTF-8 active console code pageで実行されているか、またはアクティブなコンソールコードページがUTF-8に設定されている(より良い)場合は、chcp 65001コマンドを参照してください。

CJK漢字および中央ヨーロッパアクセントラテン文字次の例で使用され、両方の明示的なファイル名の保存されたリストから読み取るバッチコマンドで使用します。)

。なお、 cmdUTF-8認識しているが、を認識(CF byte order mark BOMないようbatスクリプト(@foo.bar >NUL 2>&1)で奇妙な最初の行があります):

  • スクリプトがBOMなしで保存されている場合、スクリプトがBOMで保存されている場合、この行は、いくつかの文字(複数可)が付いて表示されます
  • ながら、この行は効果なしで実行される、参照で次の出力。 txtファイルリストの最初の行は、同じ理由のために空であることを

注BOMがそうでなければ何かをしようとする試みを提示されていない場合は、この空行を無視しますので、for /Fループ(cmdBOM認識していません)そのようなファイルではFile Not Foundエラーが発生します(このメッセージは2>NULを使用して抑制できます)。

42030220.batスクリプト

@foo.bar >NUL 2>&1 
@echo OFF 
SETLOCAL EnableExtensions DisableDelayedExpansion 
chcp 65001 
echo next command: for /F "usebackq delims=" %%G … 
for /F "usebackq delims=" %%G in ("D:\bat\files\unASCII\42030220.txt") do (
    dir /B /S "%%~G" 
    REM 
    REM use `del /S "%%~G"` instead of `dir /B /S "%%~G"` 
) 
echo next command: dir /B /S /A:-D "D:\bat\Unusual Names\CJK\中文(繁體)\*" 
dir /B /S /A:-D "D:\bat\Unusual Names\CJK\中文(繁體)\*" 

42030220.txtファイルリスト(ノート有数空行):

  
二月.mp3 
ěščřžýáíé.txt 
装备女印度舞娘时装上衣.rtf 

出力

d:\bat> d:\bat\SO\42030220.bat 

d:\bat> @foo.bar 1>NUL 2>&1 
Active code page: 65001 
next command: for /F "usebackq delims=" %G … 
File Not Found 
d:\bat\Unusual Names\CJK\中文(繁體)\二月.mp3 
d:\bat\UnASCII Names\ěščřžýáíé.txt 
d:\bat\Unusual Names\CJK\中文(繁體)\装备女印度舞娘时装上衣.rtf 
next command: dir /B /S /A:-D "D:\bat\Unusual Names\CJK\中文(繁體)\*" 
D:\bat\Unusual Names\CJK\中文(繁體)\chinese traditional.txt 
D:\bat\Unusual Names\CJK\中文(繁體)\二月.mp3 
D:\bat\Unusual Names\CJK\中文(繁體)\装备女印度舞娘时装上衣.rtf 

d:\bat> 
関連する問題