我有一个批处理文件来备份目录。 .bat可以正常工作,但是在我的LOG.txt中我写了一些信息,其中一个应该是复制的文件数量。我在这里指出,XCOPY
完成后,无法计算目录中文件的数量,除非它计算目录中每个子文件夹中的每个文件。
到目前为止我所拥有的:
@echo off
SET dct-light_src= dir
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dct_light_startting_date=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set dct_light_startting_time=%%a%%b)
SET starttime=%dct_light_startting_date%
IF EXIST C:\Users\user\Desktop\tools_backup\dct_light\dctlight_backup_%starttime%\ (
MD C:\Users\william_silva4\Desktop\tools_backup\dct_light\dctlight_backup%starttime%\dctlight_backup
SET dct-light_dtn=C:\Users\william_silva4\Desktop\tools_backup\dct_light\dctlight_backup%starttime%\dctlight_backup
echo A folder for this backup already exists. Beggining overwrite...
) ELSE (
MD C:\Users\william_silva4\Desktop\tools_backup\dct_light\dctlight_backup_%starttime%\dctlight_backup
SET dct-light_dtn=C:\Users\william_silva4\Desktop\tools_backup\dct_light\dctlight_backup_%starttime%\dctlight_backup\
)
XCOPY %dct-light_src% %dct-light_dtn% /w /e /y
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dct_light_finished_date=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set dct_light_finished_time=%%a%%b)
SET startdate=%dct_light_finished_date%
SET starttime=%dct_light_startting_date%_%dct_light_startting_time%
SET finishedtime=%dct_light_finished_date%_%dct_light_finished_time%
CD C:\Users\william_silva4\Desktop\tools_backup\dctlight_backup__%starttime%\
echo.LOG of %starttime%'s Backup>LOG_%startdate%.txt
echo.Start time: %starttime%>>LOG_%startdate%.txt
echo.Finished time: %finishedtime%>>LOG_%startdate%.txt
pause>nul
我曾尝试FOR
对目标目录中的文件进行计数,但是没有用,并且我还没有找到有关如何存储XCOPY
之后显示的文件数量的线索完成复制。
任何帮助将不胜感激。
答案 0 :(得分:2)
计算当前目录和所有子目录中的所有文件。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /A "N=0"
FOR /F %%f IN ('DIR /S /B /A:-D "*"') DO (
SET /A "N=!N!+1"
)
ECHO N is %N%
PowerShell使许多事情变得更容易。
Get-ChildItem -File -Recurse | Measure-Object | ForEach-Object { $_.Count }"
如果必须从.bat脚本运行它,则可以使用以下内容。
FOR /F %n IN ('powershell -NoProfile -Command "Get-ChildItem -File -Recurse | Measure-Object | ForEach-Object { $_.Count }"') DO (SET /A "N=%n")
另一种方法是将XCOPY命令的输出捕获到一个文件中,然后从那里计算适用行。