2

バッチ スクリプトを使用して、ファイルにキリル文字が含まれているかどうかに応じて、さまざまな宛先に送信しようとしているテキスト ファイルが多数あります。例えば:

All Files are  located in C:\mydocs. The script will be monitoring this file.

File one: contains all English characters > copy to C:\mydocs\English\
File two: Contains some Cyrillic characters > copy to C\mydocs\Contains_Cyrillic\

これは可能ですか?

4

2 に答える 2

1

テキストファイルのエンコード方法によって異なります。ファイルがユニコードの場合、テスト方法がわかりません。

ただし、ファイルが ASCII 拡張 (1 文字あたり 1 バイト) の場合、バイト > 10 進数 127 の意味はコード ページに依存します。ファイルにキリル文字が含まれているかどうかはわかりませんが、英語以外の文字である可能性が高い 127 より大きいバイトが含まれているかどうかはわかります。

次のスクリプトは、Windows XP 以降で動作するはずです。何もダウンロードする必要はありません。

最初に、文字「A」のみで構成される、ファイルの長さ以上のファイルを作成します。次に、FC を使用してバイナリ比較を行い、結果を FINDSTR にパイプして、0x80 以上の値を探します。見つかった場合は ERRORLEVEL 1 を返し、そうでない場合は ERRORLEVEL 0 を返します。

@echo off
call :HasExtendedASCII %1 && (echo English) || echo Not English
exit /b

:HasExtendedASCII
setlocal enableDelayedExpansion
set "tempFile=%temp%\dummyFile%random%.txt"
<nul set /p "=A" >"!tempFile!"
set /a dummySize=1
for /l %%N in (1 1 32) do if !dummySize! lss %~z1 (set /a dummySize*=2 & type "!tempFile!" >>"!tempFile!")
fc /b "!tempFile!" %1|findstr /re " [89ABCDEF][0123456789ABCDEF]" >nul&& set rtn=1 || set rtn=0
del "!tempFile!"
exit /b %rtn%
于 2012-12-01T20:27:49.563 に答える
0
于 2012-12-01T10:40:15.033 に答える