web-dev-qa-db-ja.com

CMDシェルの空き領域

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

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

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

87
Peter Lundkvist

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

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

105
Nico

可能な解決策:

dir|find "bytes free"

より多くの " advanced solution "、Windows XP以降の場合:

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

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

44
VonC

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
lit

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

5
Dewsri De Mel

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

@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番目の「Word」である必要があります(または、tokens=ビットを変更して別のWordを取得できます)。
  • 数千の区切り文字は,文字です(または、コンマから他の文字に置換を変更できます)。

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

5
paxdiablo

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/ コマンドプロンプトに多くの強力なツールを追加します。ドライブMで使用可能なスペースだけを取得するには(ウィンドウで共有ドライブにマップされる)、次のように入力できます。

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

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
Zsolt Hidasi

Cscriptはサードパーティのアプリですか? Microsoft Scripting を試してみることをお勧めします。プログラミング言語(JScript、VBS)を使用して List Available Disk Space のようなものをチェックできます。

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

0
gimel

Windows 10では、コピー先のディレクトリに対して大きすぎるファイルがコピーされた場合、コピーおよびxcopy操作はすぐに失敗します。したがって、コピー操作を開始する前に、使用可能な空きディスク容量を確認する必要はありません。

0