私は 10 年間、バッチ ファイルで何もしていませんが、CG100.mpg から CG999.mpg という名前の一連のファイルのファイル サイズを一覧表示する必要があることに気付きました。
FORループを使用して、一連の同様の名前のファイルを1つずつ調べるバッチファイルを取得する方法が必要ですか?
私は 10 年間、バッチ ファイルで何もしていませんが、CG100.mpg から CG999.mpg という名前の一連のファイルのファイル サイズを一覧表示する必要があることに気付きました。
FORループを使用して、一連の同様の名前のファイルを1つずつ調べるバッチファイルを取得する方法が必要ですか?
絶対に、FORを使用して結果を取得する簡単な方法があります-ヘルプの最後にあるFORループ拡張修飾子について読んでください-タイプHELP FOR
するかFOR /?
、コマンドラインから。
バッチファイルも必要ありません。このワンライナーは、コマンドラインで必要なことを正確に実行します。
for /l %N in (100 1 999) do @for %F in (GC%N.mpg) do @if exist %F echo %F size = %~zF
%
バッチファイル内でコマンドを使用する%%
場合は、すべてをに変更します。
パターンに一致するすべてのファイルのサイズを一覧表示するだけの場合、コマンドはさらに簡単ですGC*.mpg
。
for %F in (GC*.mpg) do @echo %F size = %~zF
Python を利用できる場合は、次のように動作します。
from os.path import getsize
results = [('CG%d.mpg = ' % i) + str(getsize('CG%d.mpg' % i)) for i in range(100, 999)]
print results
それ以外の場合は、バッチ ファイルの場合はFORFILESを使用できます。
Select a file (or set of files) and execute a command on each file. Batch processing.
Syntax
FORFILES [/p Path] [/m Mask] [/s] [/c Command] [/d [+ | -] {dd/MM/yyyy | dd}]
Key /p Path The Path to search (default=current folder)
/s Recurse into sub-folders
/C command The command to execute for each file.
Wrap the command string in double quotes.
Default = "cmd /c echo @file"
The Command variables listed below can also be used in the
command string.
/D date Select files with a last modified date greater than or
equal to (+), or less than or equal to (-),
the specified date using the "dd/MM/yyyy" format;
/D + dd Select files with a last modified date greater than or
equal to the current date plus "dd" days. (in the future)
/D - dd Select files with a last modified date less than or
equal to the current date minus "dd" days. (in the past)
A valid "dd" number of days can be any number in
the range of 0 to 32768. (89 years)
"+" is taken as default sign if not specified.
Command Variables:
@file The name of the file.
@fname The file name without extension.
@ext Only the extension of the file.
@path Full path of the file.
@relpath Relative path of the file.
@isdir Returns "TRUE" if a file type is a directory,
and "FALSE" for files.
@fsize Size of the file in bytes.
@fdate Last modified date of the file.
@ftime Last modified time of the file.