Rumah pembangunan bahagian belakang tutorial 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
Salin selepas log masuk

?

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

?? 我在计算每个文件的行数的时候,就是输出不了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;}
Salin selepas log masuk

?

?

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

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

?

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

?

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Aplikasi asli Hongmeng puisi rawak Aplikasi asli Hongmeng puisi rawak Feb 19, 2024 pm 01:36 PM

Untuk mengetahui lebih lanjut tentang sumber terbuka, sila lawati: Komuniti Pembangun 51CTO Hongmeng https://ost.51cto.com Persekitaran berjalan DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. Untuk membuat aplikasi, klik Fail- >newFile->CreateProgect. Pilih templat: [OpenHarmony] EmptyAbility: Isikan nama projek, shici, nama pakej aplikasi com.nut.shici dan lokasi storan aplikasi XXX (tiada bahasa Cina, aksara khas atau ruang). CompileSDK10, Model: Stage. Peranti

Gunakan fungsi File.length() java untuk mendapatkan saiz fail Gunakan fungsi File.length() java untuk mendapatkan saiz fail Jul 24, 2023 am 08:36 AM

Gunakan fungsi File.length() Java untuk mendapatkan saiz fail Saiz fail adalah keperluan yang sangat biasa apabila berurusan dengan operasi fail Java menyediakan cara yang sangat mudah untuk mendapatkan saiz fail, iaitu, menggunakan panjang(. ) kaedah kelas Fail. Artikel ini akan memperkenalkan cara menggunakan kaedah ini untuk mendapatkan saiz fail dan memberikan contoh kod yang sepadan. Pertama, kita perlu mencipta objek Fail untuk mewakili fail yang kita ingin dapatkan saiznya. Berikut ialah cara membuat objek Fail: Filef

Bagaimana untuk menukar gumpalan php kepada fail Bagaimana untuk menukar gumpalan php kepada fail Mar 16, 2023 am 10:47 AM

Cara menukar gumpalan php kepada fail: 1. Buat fail sampel php 2. Melalui "function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' }) } ” kaedah boleh digunakan untuk menukar Blob kepada Fail.

Namakan semula fail menggunakan fungsi File.renameTo() java Namakan semula fail menggunakan fungsi File.renameTo() java Jul 25, 2023 pm 03:45 PM

Gunakan fungsi File.renameTo() Java untuk menamakan semula fail Dalam pengaturcaraan Java, kita selalunya perlu menamakan semula fail. Java menyediakan kelas Fail untuk mengendalikan operasi fail, dan fungsi renameTo() boleh menamakan semula fail dengan mudah. Artikel ini akan memperkenalkan cara menggunakan fungsi File.renameTo() Java untuk menamakan semula fail dan menyediakan contoh kod yang sepadan. Fungsi File.renameTo() ialah kaedah kelas Fail.

Gunakan fungsi File.getParent() java untuk mendapatkan laluan induk fail Gunakan fungsi File.getParent() java untuk mendapatkan laluan induk fail Jul 24, 2023 pm 01:40 PM

Gunakan fungsi File.getParent() java untuk mendapatkan laluan induk fail Dalam pengaturcaraan Java, kita selalunya perlu mengendalikan fail dan folder. Kadangkala, kita perlu mendapatkan laluan induk bagi fail, iaitu laluan folder tempat fail itu berada. Kelas Fail Java menyediakan kaedah getParent() untuk mendapatkan laluan induk bagi fail atau folder. Kelas Fail ialah perwakilan abstrak Java bagi fail dan folder. Ia menyediakan satu siri kaedah untuk mengendalikan fail dan folder. Antaranya, dapatkan

Gunakan fungsi File.getParentFile() java untuk mendapatkan direktori induk fail Gunakan fungsi File.getParentFile() java untuk mendapatkan direktori induk fail Jul 27, 2023 am 11:45 AM

Gunakan fungsi File.getParentFile() java untuk mendapatkan direktori induk fail Dalam pengaturcaraan Java, kita selalunya perlu mengendalikan fail dan folder. Apabila kita perlu mendapatkan direktori induk fail, kita boleh menggunakan fungsi File.getParentFile() yang disediakan oleh Java. Artikel ini menerangkan cara menggunakan fungsi ini dan menyediakan contoh kod. Kelas fail dalam Java ialah kelas utama yang digunakan untuk mengendalikan fail dan folder. Ia menyediakan banyak kaedah untuk mendapatkan dan memanipulasi sifat fail

Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Jan 30, 2024 am 09:08 AM

Dalam era perkembangan teknologi yang pesat hari ini, bahasa pengaturcaraan bermunculan seperti cendawan selepas hujan. Salah satu bahasa yang telah menarik perhatian ramai ialah bahasa Go, yang digemari oleh ramai pembangun kerana kesederhanaan, kecekapan, keselamatan serentak dan ciri-ciri lain. Bahasa Go terkenal dengan ekosistemnya yang kukuh dengan banyak projek sumber terbuka yang sangat baik. Artikel ini akan memperkenalkan lima projek sumber terbuka bahasa Go yang dipilih dan membawa pembaca untuk meneroka dunia projek sumber terbuka bahasa Go. KubernetesKubernetes ialah enjin orkestrasi kontena sumber terbuka untuk automatik

Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Mar 24, 2024 pm 01:15 PM

"Go Language Development Essentials: 5 Syor Rangka Kerja Popular" Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go digemari oleh semakin ramai pembangun. Untuk meningkatkan kecekapan pembangunan dan mengoptimumkan struktur kod, ramai pembangun memilih untuk menggunakan rangka kerja untuk membina aplikasi dengan cepat. Dalam dunia bahasa Go, terdapat banyak rangka kerja yang sangat baik untuk dipilih. Artikel ini akan memperkenalkan 5 rangka kerja bahasa Go yang popular dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan rangka kerja ini dengan lebih baik. 1.GinGin ialah rangka kerja web yang ringan dengan pantas

See all articles