6

MS-DOSでは、と入力するdir *.pdfと、すべてのPDFファイルがディレクトリに保存されます。PDFファイル以外のすべて取得する方法はありますか?のようなものdir !*.pdf

ありがとう!

4

5 に答える 5

13

grep-vと同等のfindstrの/vオプションがあると思います(テキストを含まないすべての行を含めます。したがって、次のようになります。

dir | findstr /vi ".pdf"

構文は少し異なる場合があります。使用する必要はあまりなく、現在の場所でWindowsを実行していません。

findstr /?を使用します 詳細については、コマンドプロンプトから。

または、CygWin(この種のものに最適なツール)をインストールする場合は、grep自体を使用できます。

ls -al | grep -vi '\.pdf$'

補遺:

私は実際にはこれに気づいていませんでしたが、どうやらfindstrは正規表現もサポートしているので、次を使用できます。

dir | findstr /vi "\.pdf$"

grepとまったく同じです(これはテストしていません。TechNetで見つけただけなので、自分でテストする必要があります)。

于 2009-05-07T14:38:53.430 に答える
3

dirとfindstrを組み合わせて、ほぼ必要なことを実行できます。

dir * | findstr /vi .pdf

ただし、ファイルの名前がmy.pdf.converted.txtの場合、ここで誤って破棄されることに注意してください。

本当に凝ったものにしたい場合は、完全に正しいバージョンを次に示します。バッチスクリプトに適しています。

for /f %a in ('dir /b *') do @if "%~xa" neq ".txt" echo %a

何をしようとも頑張ってください:)DOSは「楽しい」です。

于 2009-05-07T14:39:30.353 に答える
0

私はそれがすでにあなたのために働いていることを知っています、しかしあなたはこのようなDOSのほとんどのバージョン(少なくとも私が覚えているもの)でそれをすることができました。

Attrib * .bad + H
dir / oE
Attrib * .bad -H

これは、表示したくないものを非表示にし、dirを実行してから非表示を解除するという効果があります。それは私が認めなければならない少し厄介ですが、それはトリックを行うようです。

于 2009-05-07T15:01:59.300 に答える
0

MS-DOSまたはCMDでは、PDFファイルを避けるために次のように入力するだけです。

dir | find/V ".pdf"

ただし、出力の下部にあるファイルの数にはpdfファイルが含まれることに注意してください。

さらに、「。pdf」を「.xxx」に置き換えることで、このコマンドを他の拡張子にも使用できます。ここで、xxxは任意の拡張子です。

于 2013-01-10T17:31:25.143 に答える
0

findstr / findを使用したり、別のコマンドにパイプしたりしない簡単な方法は次のとおりです。

for %%a in (*) do (
    if not exist %%~Na.pdf   echo %%a
)

基本的に、forループはすべてのファイルをループします。「存在しない場合」は、*。pdfファイルが印刷されないことを保証します

%%〜Naは、%%a変数のファイル名を拡張子なしで使用することを意味します。

于 2014-11-17T07:53:29.470 に答える