Batch file 如何计算两个不同目录中的文件数,并使用批处理文件进行比较?
我正在尝试比较本地文件夹中的文件数与服务器中的源文件夹中的文件数 我在下面的批处理文件中有以下几行,但无论发生什么情况,我总是得到相同的值Batch file 如何计算两个不同目录中的文件数,并使用批处理文件进行比较?,batch-file,Batch File,我正在尝试比较本地文件夹中的文件数与服务器中的源文件夹中的文件数 我在下面的批处理文件中有以下几行,但无论发生什么情况,我总是得到相同的值 @for /f %%a in ('2^>nul dir "%local_folder%" /a/b/-o/-p/s^|find /v /c ""') do set n=%%a echo Total files in Local Folder: %n% pause @for /f %%a in ('2^>nul dir "%source_fol
@for /f %%a in ('2^>nul dir "%local_folder%" /a/b/-o/-p/s^|find /v /c ""') do set n=%%a
echo Total files in Local Folder: %n%
pause
@for /f %%a in ('2^>nul dir "%source_folder%" /a/b/-o/-p/s^|find /v /c ""') do set m=%%a
echo Total files in Source Folder: %m%
pause
if %n%==%m% (copy update_folder local_folder.\ && goto end) else (goto copy_all_files)
pause
当我尝试计数不同位置的文件时,得到的值是相同的。我只想统计每个文件夹上扩展名为*.wav
的可见文件
更新:我找到的分辨率如下
:file_count_chck
set folder_cf=".\folder-A\*.wav"
set folder_lib="\\folder-B\*.wav"
dir %folder_cf% > A.txt
dir %folder_lib% > B.txt
set count_cf=0
for /f %%x in (A.txt) do set /a count_cf+=1
set count_lib=0
for /f %%y in (B.txt) do set /a count_lib+=1
set data_lines=5
set /A count_cf = %count_cf%-%data_lines%
set /A count_lib = %count_lib%-%data_lines%
echo.
echo Checking Sound folder...
echo Sound files on CF card = %count_cf%
echo Sound files on library = %count_lib%
del "A.txt" "B.txt"
set /a difference_count=%count_lib%-%count_cf%
if %difference_count% EQU 0 (echo Ok && goto wav_update) else (echo Detected missing files and correcting && goto copy_all_wav)
希望有人觉得这很有用。
目录“%local\u folder%\*.wav”/A:-D/B/S
用于筛选*.wav
文件。无论如何,如果从一个位置删除某个文件,从另一个位置删除另一个文件,那么计数仍然相同,该怎么办?也许可以帮助你,特别是/D
选项;或者你去,它有更多的同步功能…当你说在该位置可见的文件,你应该包括所有的子目录吗?无论采用哪种方式,您都需要阅读所使用命令的帮助,并在提问之前进行尝试,这些问题的答案很容易找到,例如,for/?
,dir/?
,find/?
等。例如,要返回目录中的所有非隐藏,(可见),.wav
文件,dir/B/a:-D-H“D:\directory\*.wav”
,或相同但也包括任何子目录,Dir/B/S/A:-D-H“D:\directory\*.wav”
。感谢aschipfl和Compo的评论。我需要帮助,因为我似乎不知道如何进行计数,并将其分配给单独的变量,然后进行比较。解决了我自己的问题。