2011-09-11 17 views

答えて

2

ここでは、コマンドプロンプト/ MS-DOSのバッチファイルについてのあなたのことを想定していますか?

あなたが悲しいことに、その後であれば答えはNOである、昔ながらのバッチファイルのサポートONLYワイルドカードは以下のとおりです。

* = match all 

と ? =その1

一致:

 mytune*.mp? 

が一致します

 mytune01.mp3, mytune01.mpg, mytune-the-best.mpe 

しかし、代替あり...

をあなたは、現代のWindowsのバージョンを使用している場合、チャンスはあなたです電源シェルがインストールされている場合は、

start->を実行してからpower-shellを入力し、 Enterキーを押すと、コマンドプロンプトウィンドウが開いているかのように表示されたら、それをインストールしていれば、MSサイトでダウンロードを見てください。

http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-13-text-and-regular-expressions.aspx

私はしかし、時間かそこらを過ごす推薦:あなたはこれをしたら、あなたがまっすぐでダイビングをしたい場合は

することは、あなたがREG-EXに必要なすべてがここにPSで見つけることができますまず基礎を学ぶ。

+0

はい、あなたはそれを推測しました私は窓について話していますバッチ 私はそのようなものはないと推測しましたが、それは尋ねる傷つけません とにかくおかげで:) – Ori

+0

絶対に... powershellはあなたが欲しいものを行います。バッチファイルの代わりに使用することができます。 – shawty

1

findstrに存在します。 チェックアウトTHIS

+1

findstrは指定された文字列のファイル内のみを検索します。この場合、OPはコマンドラインの正規表現に関するものでした。 – shawty

+0

コマンド出力をファイルに書き出すと、 'findstr'で検索することができます。 –

10

このクレジットの一部は、Y.A.P.の答えになります。

次のコードは、ファイル名に少なくとも1つの数字であなたのディレクトリ内のすべてのファイルを取得します:

@Echo Off 
CD C:\Folder\To\Process 
Dir /B>Dir.temp 
FindStr /R "[0-9]" "Dir.temp">FindStr.temp 
Del Dir.temp 
For /F "tokens=*" %%a In (FindStr.temp) Do Call :WorkIt "%%a" 
Del FindStr.temp 
Exit /B 

:WorkIt 
:: Insert code here. Use %1 to get the file name with quotes. For example: 
Echo Processing %1... 
Exit /B 

FindStrラインは、正規表現式が含まれています。正規表現のコマンドライン版には制限があります。どのくらい正確な範囲があり、ファイル名はどの形式ですか?

たとえば、すべてのファイルに3桁の数字が含まれていることがわかっている場合は、それを000299までのすべての項目に制限することができます。式は[0-2][0-9][0-9]です。

+0

大変ありがとう、それは私が探していたものかもしれません – Ori

+1

こんにちは、 'dir/B'の出力を' findstr'にパイプすることで中間ファイル 'Dir.temp'を取り除くことができました。この 'dir/B | findstr/R "[0-9]"> FindStr.temp'。そうでなければ、非常に良い投稿、私は多くの助けた。乾杯! – Jagger

関連する問題