ホームページ バックエンド開発 PHPチュートリアル 批处理及PHP编写目录上的统计文件行数及个数

批处理及PHP编写目录上的统计文件行数及个数

Jun 13, 2016 am 11:00 AM
echo file

批处理及PHP编写目录下的统计文件行数及个数

?? ??今天要统计下写的代码的行数(去除空行及注释)及目录下的文件总数。首先想到的是一个批处理命令,因为简单而且高效,于是去网上找了下批命令的教程,写了个简单的批命令处理:?

??????

@Rem: 本批命令用来计算某个路径下的总文件个数,及总行数。行数的计算不算空行@Rem: author: 肖肖 [email protected]@echo ****************************************************************@echo off@echo 使用说明:@echo 1、更改要计算的路径:将filePath的路径更改为自己的需要的路径。@echo 2、更改统计的文件后缀,如果需要统计所有文件则将fileExt设置为*,如果只需要统计php文件则将该变量指定为*.php@echo ****************************************************************@set fileExt=*.php@set filePath=D:\PHPAPP\phpwindframework\wind@setlocal enabledelayedexpansion@set filenum=0@set totalnum=0@for /r %filePath% %%i in (%fileExt%) do (	@set linenum=0 & @set /a filenum+=1 & @echo %%i & (@for /f "usebackq" %%b in (%%i) do @set /a linenum+=1) & @echo 行数:!linenum! & @set /a totalnum+=linenum)@echo 总行数: %totalnum%行@echo 总文件数: %filenum%@pause
ログイン後にコピー

?

?? ? ?具体的命令意思我就不解释了,特别说明下:

?? 我在计算每个文件的行数的时候,就是输出不了linenum,后来经过询问查找,原来是延迟的问题,于是在开头加了命令setlocal enabledelayedexpansion来开启延迟,同时输出采用@echo !linenum!的 这样!!的方式输出。

该批命令可以指定统计处我指定目录下的文件个数(可以指定统计的文件的类型),及总行数(去除了空行)。

但是对于代码统计来说,去除空行及注释的统计才是理想的状态。相对于批命令还是PHP来的给力,所以写了一个PHP版本的统计:

???

/** * @author xiaoxia xu <[email&#160;protected]> 2011-1-12 * @link http://www.phpwind.com * @copyright Copyright &copy; 2003-2110 phpwind.com * @license * 统计目录下的文件行数及总文件数··去除注释 */$fileExt = ".php";$filePath = "D:\PHPAPP\phpwindframework\wind";if (!is_dir($filePath)) exit('Path error!');list($totalnum, $linenum, $filenum) = readGiveDir($filePath, $fileExt);echo "*************************************************************\r\n";echo "总行数: " . $totalnum . "\r\n";echo "总有效行数: " . $linenum . "\r\n";echo '总文件个数:' . $filenum;function readGiveDir($dir, $fileExt) {	$totalnum = 0;	$linenum = 0;	$filenum = 0;	if ($dh = opendir($dir)) {        while (($file = readdir($dh)) !== false) {			if (in_array($file, array(".", "..", '.svn'))) continue;			if (is_dir($dir . '/' . $file)) {				list($num1, $num2, $num3) = readGiveDir($dir . '/' . $file, $fileExt);				$totalnum += $num1;				$linenum += $num2;				$filenum += $num3;			} else {				if (strrchr($file, '.') == $fileExt) {					list($num1, $num2) = readfiles($dir . '/' . $file);					$totalnum += $num1;					$linenum += $num2;					$filenum ++;					continue;				}			}        }        closedir($dh);    } else {		echo 'open dir <' . $dir . '> error!' . "\r";	}	return array($totalnum, $linenum, $filenum);}function readfiles($file) {	echo $file . "\r\n";    //$p = php_strip_whitespace($file);	$str = file($file);	$linenum = 0;	foreach ($str as $value) {		if (skip(trim($value))) continue;		$linenum ++;	}	$totalnum = count(file($file));	echo '行数:' . $totalnum . "\r\n";	echo '有效行数:' . $linenum . "\r\n";	return array($totalnum, $linenum);}function skip($string) {	if ($string == '') return true;	$array = array("*", "/*", "//", "#");	foreach ($array as $tag) {		if (strpos($string, $tag) === 0) return true;	}	return false;}
ログイン後にコピー

?

?

?? 代码也挺简单,这边就不做解释了,其中我处理跳过空行和注释行的是在skip这个函数中,这里声明了一个数组,用来声明我可以过滤的标签(可以看到这里都是PHP中的注释标签),我在查找的时候只要查找是否这些标签是在最前面的位置即可。但是这样会存在一个问题,当我的代码出现不规范的格式化的时候,可能出现代码中的*乘号进行了换行到了新的一行的开始位置,那也会被过滤掉。但总的来说··这两种统计都满足了我的需求。

Tips: PHP的该方法,放在命令行下运行效果更佳。~

?

?? 第一次觉得,当我遇到问题的时候,真的用自己的所学做了一些小便利的工具提供给自己使用。哈哈哈···纪念下~~~

?

?? 希望你有个好心情~~~

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaのFile.length()関数を使用してファイルのサイズを取得します。 JavaのFile.length()関数を使用してファイルのサイズを取得します。 Jul 24, 2023 am 08:36 AM

ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

PHP BLOBをファイルに変換する方法 PHP BLOBをファイルに変換する方法 Mar 16, 2023 am 10:47 AM

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

紅夢ネイティブアプリケーションのランダムな詩 紅夢ネイティブアプリケーションのランダムな詩 Feb 19, 2024 pm 01:36 PM

オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

JavaのFile.renameTo()関数を使用してファイルの名前を変更する JavaのFile.renameTo()関数を使用してファイルの名前を変更する Jul 25, 2023 pm 03:45 PM

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

JavaのFile.getParent()関数を使用してファイルの親パスを取得します。 JavaのFile.getParent()関数を使用してファイルの親パスを取得します。 Jul 24, 2023 pm 01:40 PM

ファイルの親パスを取得するには、Java の File.getParent() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。場合によっては、ファイルの親パス、つまりファイルが存在するフォルダーのパスを取得する必要があることがあります。 Java の File クラスには、ファイルまたはフォルダーの親パスを取得する getParent() メソッドが用意されています。 File クラスは、ファイルとフォルダーを Java で抽象表現したもので、ファイルとフォルダーを操作するための一連のメソッドを提供します。その中で、手に入れてください

JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 Jul 27, 2023 am 11:45 AM

ファイルの親ディレクトリを取得するには、Java の File.getParentFile() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。ファイルの親ディレクトリを取得する必要がある場合は、Java が提供する File.getParentFile() 関数を使用できます。この記事では、この関数の使用方法とコード例を説明します。 Java の File クラスは、ファイルやフォルダーを操作するために使用される主なクラスです。ファイルのプロパティを取得および操作するための多くのメソッドを提供します

テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト Jan 30, 2024 am 09:08 AM

今日の急速な技術発展の時代では、雨後の筍のようにプログラミング言語が出現しています。多くの注目を集めている言語の 1 つは Go 言語です。Go 言語は、そのシンプルさ、効率性、同時実行の安全性などの機能により多くの開発者に愛されています。 Go 言語は、多くの優れたオープンソース プロジェクトがある強力なエコシステムで知られています。この記事では、厳選された 5 つの Go 言語オープンソース プロジェクトを紹介し、読者を Go 言語オープンソース プロジェクトの世界へ導きます。 KubernetesKubernetes は、自動化されたオープンソースのコンテナ オーケストレーション エンジンです。

Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Mar 24, 2024 pm 01:15 PM

「Go 言語開発の要点: 5 つの人気フレームワークの推奨事項」 高速で効率的なプログラミング言語として、Go 言語はますます多くの開発者に好まれています。開発効率を向上させ、コード構造を最適化するために、多くの開発者はフレームワークを使用してアプリケーションを迅速に構築することを選択します。 Go 言語の世界には、選択できる優れたフレームワークが数多くあります。この記事では、5 つの人気のある Go 言語フレームワークを紹介し、読者がこれらのフレームワークをよりよく理解して使用できるように、具体的なコード例を示します。 1.GinGin は高速な軽量 Web フレームワークです。

See all articles