CMDシェルの空き容量


95

一部のサードパーティアプリケーションをインストールせずに、CMDのディスクまたはフォルダの空きディスク容量を取得する方法はありますか?

大きなファイルを特定のディレクトリにコピーするCMDがあり、もちろんcopyコマンドからのerrorlevelリターンを使用できますが、ファイルをコピーするのにかかる時間(たとえば...ディスクがいっぱいで、コピー操作は失敗します)。

コピーを開始する前に、何かアイデアがあるかどうかを知りたいのですが。SysinternalsのDU.EXEユーティリティを試してみましたが、表示されるのは占有スペースのみです。


「サードパーティのインストール」は「追加のソフトウェアのインストール」を意味するものと想定する必要があります。何かを提供したりインストールしたりする必要がないという実用的な側面。オンボードのみという意味です。
Alexander Stohr

回答:


112

" dir c:\" を実行すると、最後の行でディスクの空き容量が表示されます。

編集: より良い解決策: " fsutil volume diskfree c:"


1
また、dirの場合とは異なり、マウントポイントでも機能します。
LogicDaemon 2014年

2
Dirはうまく機能しますが、ドライブが空の場合はダミーファイルを作成する必要があることに注意してください。それ以外の場合は、ドライブに空き領域がありません(<3 Ms :)
Balmipour

空きバイト数だけを取得する方法はありますか?
ミナジェイコブ

また、ルートディレクトリを除いて、dir ..*(またはdir c:\thing\..*)は、ディレクトリ内にファイルが0個または多数あるかどうかに関係なく、非常に短いリストを表示します。
azhrei 2017年

fsutilの方法は、IMDisk RAMドライブのような仮想ドライブでは機能しない場合があります。エラーが発生します:関数が正しくありません。FSUTILユーティリティには、ローカルNTFSボリュームが必要です。
user2846246 2017

51

可能な解決策:

dir|find "bytes free"

Windows XP以降の「より高度なソリューション」:

wmic /node:"%COMPUTERNAME%" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace|find /I "c:"

WindowsのManagement Instrumentationコマンドライン(WMIC)ツール(Wmic.exe)は、Windows Server 2003のと同様に、Windows XPまたはVistaの程度についての膨大な量の情報を収集することができます。このツールは、Windows Management Instrumentation(WMI)を使用して、基盤となるハードウェアにアクセスします。Windows 2000には対応していません。


で述べたようにアレクサンダーStohr コメントで

  • WMICはポリシーベースの制限も確認できます。( ' dir'がまだ機能する場合でも)、
  • ' dir'はロケールに依存します。

5
WMIの場合は+1。唯一の安定したソリューションでなければなりません。特定の言語(検索)に依存することはおそらく悪い考えです:)
Joey

変数1に空きスペースを入れるには、次を使用することができます:@FOR /F "tokens=2 delims==" %%S IN ('wmic /NODE:"%COMPUTERNAME%" LogicalDisk Where ^(DriveType^="3" and DeviceID^="%some_folder:~0,2%"^) Get FreeSpace /VALUE') DO @SET freespace=%%S
Davor Josipovic

3
@Pacerier:fsutil何をしているのかに関わらず、実行するためにも管理者権限が必要だと思います。
Joey


1
@AlexanderStohr良い点。見やすくするため、回答にコメントを含めました。
VonC

8

このコマンドを使用すると、すべてのパーティション、サイズ、および空き領域を見つけることができます。 wmic logicaldisk get size, freespace, caption


7

DIRコマンドで/ -Cを使用すると、コンマを回避できます。

FOR /F "usebackq tokens=3" %%s IN (`DIR C:\ /-C /-O /W`) DO (
    SET FREE_SPACE=%%s
)
ECHO FREE_SPACE is %FREE_SPACE%

利用可能なスペースと必要なスペースを比較したい場合は、次のようなことができます。千の位の区切り記号で数値を指定し、それらを削除しました。コンマなしで数を把握することは困難です。SET / Aは便利ですが、大きな数値では機能しなくなります。

SET EXITCODE=0
SET NEEDED=100,000,000
SET NEEDED=%NEEDED:,=%

IF %FREE_SPACE% LSS %NEEDED% (
    ECHO Not enough.
    SET EXITCODE=1
)
EXIT /B %EXITCODE%

6

次のスクリプトは、ドライブの空きバイトを提供します。

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=3" %%a in ('dir c:\') do (
    set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo %bytesfree%
endlocal && set bytesfree=%bytesfree%

これは、dirコマンドの出力に依存することに注意してください。これには、フォーマットの空き領域を含む最後の行が必要です24 Dir(s) 34,071,691,264 bytes free。具体的には:

  • それは最後の行でなければなりません(または、forループを変更して、bytesfreeすべての行の設定に依存するのではなく、明示的に行を検出することができます)。
  • 空きスペースは3番目の「ワード」でなければなりません(または、tokens=ビットを変更して別のワードを取得できます)。
  • 千単位の区切り文字が,文字です(または、置換をコンマから別のものに変更できます)。

bytesfree終了時に変数のみを設定して、環境の名前空間を汚染することはありません。あなたの場合はdir出力が異なる(例えば、異なるロケールまたは言語の設定)で、スクリプトを調整する必要があります。


6

df.exe

すべてのディスクを表示します。合計、使用済み、および空き容量。さまざまなコマンドラインオプションで出力を変更できます。

あなたはからそれを得ることができhttp://www.paulsadowski.com/WSH/cmdprogs.htmhttp://unxutils.sourceforge.net/またはどこか他の場所。それはduのような標準的なunix-utilです。

df -hドライブのすべての使用済みおよび使用可能なディスク容量が表示されます。例えば:

M:\>df -h
Filesystem      Size  Used Avail Use% Mounted on
C:/cygwin/bin   932G   78G  855G   9% /usr/bin
C:/cygwin/lib   932G   78G  855G   9% /usr/lib
C:/cygwin       932G   78G  855G   9% /
C:              932G   78G  855G   9% /cygdrive/c
E:              1.9T  1.3T  621G  67% /cygdrive/e
F:              1.9T  201G  1.7T  11% /cygdrive/f
H:              1.5T  524G  938G  36% /cygdrive/h
M:              1.5T  524G  938G  36% /cygdrive/m
P:               98G   67G   31G  69% /cygdrive/p
R:               98G   14G   84G  15% /cygdrive/r

Cygwinは、https//www.cygwin.com/から無料で入手できます これにより、コマンドプロンプトに多くの強力なツールが追加されます。(Windowsで共有ドライブにマップされている)ドライブMの使用可能なスペースだけを取得するには、次のように入力します。

M:\>df -h | grep M: | awk '{print $4}'

2
あなたがマイナスされている理由を知っていますか?質問をよく読んでいないからです。読む:«一部のサードパーティ製アプリケーションをインストールする必要なし»。私は個人的にはunxutilsが好きですが、ここでは答えません。
LogicDaemon 2014年

7
それはまだOP以外のここに来る人のためのまともな品質の答えだ
ピーター・

1

使用paxdiablo優れたソリューション私はドライブがトリッキー(ではない美しさ)上に存在する場合は、着信引数をチェックとして、ドライブ文字を使用して、もう少し洗練されたバッチスクリプト、方法を書きました:

@echo off
setlocal enableextensions enabledelayedexpansion
set chkfile=drivechk.tmp
if "%1" == "" goto :usage
set drive=%1
set drive=%drive:\=%
set drive=%drive::=%
dir %drive%:>nul 2>%chkfile%
for %%? in (%chkfile%) do (
  set chksize=%%~z?
)
if %chksize% neq 0 (
  more %chkfile%
  del %chkfile%
  goto :eof
)
del %chkfile%
for /f "tokens=3" %%a in ('dir %drive%:\') do (
  set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo %bytesfree% byte(s) free on volume %drive%:
endlocal

goto :eof
:usage
  echo.
  echo   usage: freedisk ^<driveletter^> (eg.: freedisk c)

注1:引数にドライブ文字として単純な文字(xなど)を入力するか、x:またはx:\形式を使用できます。

注2:サイズが0より大きい場合にのみ、スクリプトは%chkfile%からのstderrを表示します

注3:このスクリプトをfreedisk.cmdとして保存しました(使用方法を参照)


1

これをスクリプトから生成するバリエーションを作成します。

volume C: - 49 GB total space / 29512314880 byte(s) free

この情報を取得するには、diskpartを使用します。

@echo off
setlocal enableextensions enabledelayedexpansion
set chkfile=drivechk.tmp
if "%1" == "" goto :usage
set drive=%1
set drive=%drive:\=%
set drive=%drive::=%
dir %drive%:>nul 2>%chkfile%
for %%? in (%chkfile%) do (
  set chksize=%%~z?
)
if %chksize% neq 0 (
  more %chkfile%
  del %chkfile%
  goto :eof
)
del %chkfile%
echo list volume | diskpart | find /I " %drive% " >%chkfile%
for /f "tokens=6" %%a in ('type %chkfile%' ) do (
    set dsksz=%%a
)
for /f "tokens=7" %%a in ('type %chkfile%' ) do (
    set dskunit=%%a
)
del %chkfile%
for /f "tokens=3" %%a in ('dir %drive%:\') do (
  set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo volume %drive%: - %dsksz% %dskunit% total space / %bytesfree% byte(s) free
endlocal

goto :eof
:usage
  echo.
  echo   usage: freedisk ^<driveletter^> (eg.: freedisk c)

0

cscriptはサードパーティのアプリですか?Microsoft Scriptingを試すことをお勧めします。プログラミング言語(JScript、VBS)を使用して、利用可能なディスク領域の一覧表示などを確認できます

スクリプトインフラストラクチャは、現在のすべてのWindowsバージョン(2008を含む)に存在します。


1
cscript ある Microsoftスクリプトが。これは、Windowsスクリプトインタープリターのコンソールバージョンです(wscriptはGUIバージョンです)。
Synetech 2014

「サードパーティのインストール」は「追加のソフトウェアのインストール」を意味するものと想定する必要があります。何かを提供したりインストールしたりする必要がないという実用的な側面。オンボードのみという意味です。
Alexander Stohr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.