我有一个每天用txt文件填充的文件夹。在复制之前,他们的名字是未知的。 我想要做的是获得每个文件的行数。
e.g。 C:\文件夹\ 包含1.txt 2.txt 3.txt。
我想要一些可以将文件名和行数统计到一个文件中的东西。
答案 0 :(得分:0)
cd C:\Folder\
ls | % {
$c = (gc $_).Count;
Write-Output ($_.Name.PadRight(40) + "Count: " + $c) } > C:\logs\lines.log
答案 1 :(得分:0)
@echo off
(
for %%a in ("c:\folder\*.txt") do for /f %%b in ('find /c /v "" ^<"%%~fa"') do echo(%%~nxa %%b
) > "c:\somewhere\outputfile.log"
对于列表中的每个文件,计算其行和输出到日志文件的名称和行数
或者更快的版本,因为find
命令只执行一次
(
for /f "tokens=1,*" %%a in ('find /c /v "" "c:\folder\*.txt"') do @echo(%%b
)>"c:\somewhere\outputfile.log"
答案 2 :(得分:0)
这是一种批处理方式
@echo off
setlocal enabledelayedexpansion
set cnt=0
set "out=output.txt"
if exist %out% del /q %out%
for /f %%a in ('dir /b /a-d') do (
for /f %%b in ('type "%%a"^|find /v /c ""') do (
set /a cnt=%%b & >>%out% echo(%%~nxa : %%b
)
)
将上述代码复制到名为whatever.cmd的文件中,并从文件所在的目录运行它。
答案 3 :(得分:0)
这是一个PowerShell解决方案:
$x = 0
$logfile = "$env:temp\MyLog.txt"
$files = get-childitem c:\
foreach($file in $files)
{
$x++
"File: $($file.name) Count: $x FullPath: $($file.fullname)" | out-file $logfile -Append
}
糟糕,经过编辑,包括将信息输出到日志文件中。
答案 4 :(得分:0)
将Powershell与哈希表一起使用:
$counts = @{}
foreach ($file in Get-ChildItem C:\FOLDER)
{ get-content $file -ReadCount 1000 |
foreach { $counts[$file] += $_.count}
}
$counts
答案 5 :(得分:0)
长版:
$files = Get-ChildItem 'd:\*.txt'
ForEach ($file in $files) {
$lineCount = Get-Content -LiteralPath $file | Measure-Object | Select-Object -ExpandProperty Count
Write-Output "File $($file.Name) has $lineCount lines"
if ($lineCount -gt 50) {
Write-Warning "Warning $($file.Name) is too big"
}
}
(如果您重定向到文件,警告不会转到该文件。)
Squished版本(无警告):
gci *.txt | %{ write "$_ has $((gc -LiteralPath $_ | measure).Count) lines"; }
Squished版本(带警告,无法输出到文件):
gci *.txt | %{ $c=(gc -LiteralPath $_ | measure).Count; $w="Write"; if ($c -gt 50) { $w+="-Warning" }; &$w "$_ has $c lines" }