2012-01-30 8 views
0

1 GB以上の空き領域がある検索パーティションを見つけるスクリプトを実行する必要があります。すべてのavailbleパーティションをLOG.TXTするために印刷し、別のスクリプトにWindowesバッチファイル:指定する単語を含む行を検索する

@echo on 
set isComplete = 0 
set last = 0; 

DISKPART /s .\script.txt > .\log.txt 

for /f "tokens=3" %%f in ('.\log.txt') do (
FIND /C /I "GB" .\log.txt > %isComplete% 
IF %isComplete% > 0 
%last% = %%f 
) 

Dispartコール: は、私は次のように書きました。 Log.txtファイルに等しい全

パーティション###型サイズオフセット


パーティション1プライマリ74ギガバイト1024キロバイト

パーティション2プライマリを300メガバイト74ギガバイト

今、どのparttionに1GB以上の空き容量があるかチェックしたいので、私は敵の "GB"という単語を探します。

しかし、私はいつもこういうことをします。> "今のところ予期しなかったことです"エラー。 私は問題を把握するのを助けることができますか?それとももっと良い方法を提案しますか?

ありがとうございます!

答えて

0

ud。

あなたにはいくつかの問題があります。

LIST PARTITIONの出力は、各パーティションのサイズとオフセットを示します。私はDISKPARTについてあまりよく知らないが、私はサイズがパーティション内のフリースペースの量を与えるとは思わない。パーティションの大きさを示しますが、既存のファイルにすでに割り当てられているスペースの量は示されません。オフセットは、パーティションの場所を示します。それで、あなたは、行かなくても間違った足に乗っているようです。

これは、スクリプトに大きな構文上の問題があると言われています。

FOR文でファイルを読み込もうとしているようですが、ファイル名を一重引用符で囲んでいるため、実際には構文を実行しようとしています。コマンド行からHELP FORと入力し、FORコマンドの説明を注意深く読んでください。

ファイル名は(あなたにはない)スペースが含まれている場合は、あなたのラインFIND /C /I "GB" .\log.txt > %isComplete%がFINDコマンドの出力を書き込もうとされ、その後

for /f "usebackq tokens=3" %%f in ("file name with spaces.txt") do (

for /f "tokens=3" %%f in (log.txt) do (

か、どちらかをしたいです"0"という名前のファイルにコピーします。私はそれがあなたの意図であるとは思わない。 FINDコマンドは、検索文字列 "GB"を含む行の完全なテキストを出力します。少なくとも1つの一致する行が見つかった場合はERRORLEVELを0に設定し、一致する行が見つからない場合は1に設定します。あなたが何をしようとしているのか分かりません。

IF文は混乱しています。コマンドラインからHELP IFとタイプし、使用方法を注意深く読んでください。既存の試みは、あなたがない限り、いずれかの使用行継続^、または括弧を複数行accross IF文を拡張することができない多くのエラー

  • を持っています。あなたは比較演算子として>を使用することはできません

  • 、あなたは私はあなたが作るしようとしている正確に何の比較を把握することはできませんGTR

  • を使用する必要があります。

私はあなたの全体的な使命が何であるか分からないので、正しい方向に向ける方法がわかりません。おそらくあなたがしようとしていることをより詳細に記述すると、誰かがそのタスクを達成するスクリプトを提供でき、その例から学ぶことができます。

DISKPARTは潜在的に危険なツールです。どのようにLISTコマンドで害を及ぼすかはわかりませんが、誤って使用すると他のコマンドが問題を引き起こす可能性があります。バッチスクリプトの基本を学んでいる間は、DISKPARTを避けることをお勧めします。バッチプログラミングの間違いのためにあなたのハードディスクが誤って破損するのは嫌です。

関連する問題