BAT的使用~如何把DIR查看的文件数量输出到一个TXT里

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BAT的使用~如何把DIR查看的文件数量输出到一个TXT里相关的知识,希望对你有一定的参考价值。

由于我每个小时都要查看我自己的一些文件数量,但我不用一个小时去看一次,每天看一次就可以了,想用一个BAT写,但不知道怎么写,可以让他,ctar:\>dir 只要一个文件的总数量就可以了,怎么写~~谢谢了~~
先谢谢各位,三楼的老师,如果不放到要查看的文件下面,结果输出也不要放在那下面怎么改啊~
而且我每一个小时对,18台电脑里的CTAR1:\> CTAR2:\> CTAR3:\> CTAR4:\> 都要查看,想把结果都输出到一个文本里,只看一个文本就可以知道每台电脑里的每个文件夹下面的数量~

谢谢~~

加100分

@echo off
setlocal ENABLEDELAYEDEXPANSION
echo.>>统计文件个数.txt
if "%1"=="h" goto start
>%temp%\dj.vbs echo set ws=createobject("wscript.shell")
>>%temp%\dj.vbs echo do
>>%temp%\dj.vbs echo wscript.sleep 3600000
>>%temp%\dj.vbs echo ws.run """%~0"""+"h",0,true
>>%temp%\dj.vbs echo loop
start %temp%\dj.vbs

:start
for /f %%i in ('dir /b /a-d') do (
set /a s+=1
)
set /a s=s-2
echo %date% 系统时间%time:~0,5% 统计给文件夹下有: %s% 文件>>统计文件个数.txt

说明:上面是一个小时统计一次 批处理文件 所在 文件夹里面 的文件的 个数,统计数放在 叫 ”统计文件个数“里面的,
如果要改变统计时间 把上面的 3600000 数值改成你要统计时间的数值,该单位是毫秒,3600000就表示1个小时,3600000毫秒,如果是一秒,就改成 1000。
把上面的代码复制到记事本里面,保存为bat的格式,然后把该批处理文件放在要统计的文件夹里面,
注意:我把 该批处理文件和上面的统计数值的文件排除了,所以只统计你文件下的文件个数,不会统计这两个文件。

补充说明:要是该批处理不放在查看的文件夹下,就必须要写出统计的文件夹的路径,假如要查看c:\windows 下面的文件个数,就该上面的for /f %%i in ('dir /b /a-d')中()里面的内容,那么就是 ('dir /b /a-d c:\widows\*'),是不是只加了个 c:\windows\* ,就是这样,只加这个,*是通配符,表示所有文件。所以就写在这里。

要改变输入内容的文件,假如把上面的 “统计文件个数.txt”这个文件保存在 c: 下,那么上面的只改有 “统计文件个数.txt”字符的地方,把前面加上输入的路径就行的,那么就是 c:\统计文件个数.txt ,好,就是这样,
上面的代码就是这样:

@echo off
setlocal ENABLEDELAYEDEXPANSION
echo.>>c:\统计文件个数.txt
if "%1"=="h" goto start
>%temp%\dj.vbs echo set ws=createobject("wscript.shell")
>>%temp%\dj.vbs echo do
>>%temp%\dj.vbs echo wscript.sleep 3600000
>>%temp%\dj.vbs echo ws.run """%~0"""+"h",0,true
>>%temp%\dj.vbs echo loop
start %temp%\dj.vbs

:start
for /f %%i in ('dir /b /a-d c:\windows\*') do (
set /a s+=1
)
echo %date% 系统时间%time:~0,5% 统计给文件夹下有: %s% 文件>>c:\统计文件个数.txt

注释:没有set /a s=s-2 ,因为刚是把该文件放在一个文件夹下的,所以要减去批处理和统计文件这两个文件 。

特别注意的是,如果上面改写的文件路径中有空格,必须用“”括起来,比如
C:\Documents and Settings\Administrator\桌面 这个路径,其中Documents and Settings 中就有空格,所以要加“”,所以就是 “C:\Documents and Settings\Administrator\桌面”上面()里面那个路径有空,也要加上“”,所以就是 ”c:\windows\*“
参考技术A @echo OFF
echo %date:~0,-3%%time:~0,-3% 监视开始,主目录:%1,工作目录:%CD% >>%2
:LOOP
dir %1 /A-D /S /B|find /V /C "/" >tmp
for /F %%I IN ('type tmp') do set fc=%%I
echo %date:~0,-3%%time:~0,-3% 文件数:%fc%。>>%2
timeout /T %3 /NOBREAK >NUL
GOTO LOOP

Usage:
另存为FileWatcher.Bat,执行FileWatcher 监视目录 日志保存目录 间隔时间
如:FileWatcher C:\WINDOWS\SYSTEM32\ D:\log.txt 3600
即为统计C:\WINDOWS\SYSTEM32目录及子目录的所有文件数量,每一小时(3600秒)把结果记录在D:\log.txt下。

Tips:
1.统计的是所有目录和子目录的文件(包含系统文件和隐藏文件),如果不合意思请自行更改批处理中dir命令的 /A-D和/S参数。
2.因为FOR /F不支持管道命令,因此把中间结果暂存到批处理所在目录的tmp文件中,请确保你拥有这个目录的完全控制权限。
3.批处理运行后不会中止也没有任何输出,要中止请按ctrl+break
4.期望的日期格式形如2009/12/30 08:28:30,在win7中%date%格式是2009/12/30 周三,%time%格式是 8:32:10.08因此用%date:~0,-3%%time:~0,-3%各裁剪掉倒数3个字符,如果你的系统格式不是这样请自行修改。

HaveFun~
参考技术B @echo off&for /f %%a in ('dir /s *.*') do echo %%a>>new.txt&for /f %%b in ('dir /s/b *.*') do echo %%b>>new.txt
pause

以上是关于BAT的使用~如何把DIR查看的文件数量输出到一个TXT里的主要内容,如果未能解决你的问题,请参考以下文章

如何把一个文件夹中所有文件的文件名导出

如何把批处理文件里面输出的内容输出到文本

Matlab如何提取文件名

BAT命令如何批量压缩文件到压缩包?

bat运行后的所有记录如何保存为txt

如何使用Java执行cmd命令