标题: [数值计算] 批处理如何统计复制文件的数量? [打印本页]
作者: sw_lwb 时间: 2010-12-26 15:10 标题: 批处理如何统计复制文件的数量?
本帖最后由 pcl_test 于 2016-8-10 18:29 编辑
我有一批处理如下:
==============================================
@echo off
for /f "delims=" %%i in ('dir/a-d/b') do (
echo %%i|findstr "ex" &© %%i \\192.168.20.2\Report\dj
echo %%i|findstr "花肥" &© %%i \\192.168.20.2\Report\jj
echo %%i|findstr "亚欧" &© %%i \\192.168.20.2\Report\jj
echo %%i|findstr "敖德萨" &© %%i \\192.168.20.2\Report\jj
echo 按任意键退出
==============================================
功能是根据文件名复制文件到网络共享文件夹里。现在我想请教如何在复制完文件后显示复制文件的数量?
作者: tmplinshi 时间: 2010-12-26 15:56
- @echo off
- for /f "delims=" %%i in ('dir /a:-d /b') do (
- echo "%%i" | findstr "ex" && (
- copy "%%i" \\192.168.20.2\Report\dj
- set /a n += 1
- )
- echo "%%i" | findstr "花肥 亚欧 敖德萨" && (
- copy "%%i" \\192.168.20.2\Report\jj
- set /a n += 1
- )
- )
- echo 复制了 %n% 个文件
- echo 按任意键退出
- pause
复制代码
建议用以下代码,虽然代码比你原来的多,但是速度快一点。
(以下代码不能统计复制数量。。)- @echo off
- for /f "delims=" %%i in ('dir /a:-d /b') do (
- set var=%%i
- SetLocal EnableDelayedExpansion
- if "!var:ex=!" neq "!var!" (
- copy "!var!" \\192.168.20.2\Report\dj
- set /a n += 1
- )
- for %%a in (花肥 亚欧 敖德萨) do (
- if "!var:%%a=!" neq "!var!" (
- copy "!var!" \\192.168.20.2\Report\jj
- set /a n += 1
- )
- )
- EndLocal
- )
- echo 复制了 %n% 个文件
- echo 按任意键退出
- pause >nul
复制代码
[ 本帖最后由 tmplinshi 于 2010-12-26 17:40 编辑 ]
作者: sw_lwb 时间: 2010-12-26 16:16
原帖由 tmplinshi 于 2010-12-26 15:56 发表
@echo off
for /f "delims=" %%i in ('dir /a:-d /b') do (
echo "%%i" | findstr "ex" && (
copy "%%i" \\192.168.20.2\Report\dj
set /a n += 1
)
echo "%%i" | findstr "花肥 ...
非常感谢,版主的热心帮助。
作者: hanyeguxing 时间: 2010-12-26 16:40 标题: 回复 2楼 的帖子
第2楼第个代码:两个 set /a n += 1 都位于 SetLocal EnableDelayedExpansion 和 EndLocal 区间,他们的数值 n 在每个循环结束时被清空
作者: 随风 时间: 2010-12-26 17:01
这么多 findstr 影响效率啊,直接用dir 的通配符来过滤不可以吗
2楼的第二个代码直接省略了过滤部分,不合题意了吧?
[ 本帖最后由 随风 于 2010-12-26 17:02 编辑 ]
作者: tmplinshi 时间: 2010-12-26 17:38 标题: 回复 5楼 的帖子
是的,我偶尔会犯这个错误。。那个方法只能改用临时文件,或不兼容英文感叹了。
直接 dir 的方法也不错。- @echo off
- for %%a in (*ex*) do (
- copy "%%a" \\192.168.20.2\Report\dj
- set /a n += 1
- )
- for %%a in (*花肥* *亚欧* *敖德萨*) do (
- copy "%%a" \\192.168.20.2\Report\jj
- set /a n += 1
- )
- echo 复制了 %n% 个文件
- echo 按任意键退出
- pause >nul
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |