[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何提取文件夹的指定文件出来呢?

本帖最后由 pcl_test 于 2015-9-15 00:44 编辑

求解,如何提取文件夹的指定内容出来呢?就如以下图片一样,在服务器中的目录下运行命令,
把除了1,2,3,4,5,7,15,16以外的图片拷下来,这可以用命令实现么?
复制的内容可以放到电脑中的一个指定位置中,如 E:\描述图提取
最后要提取的内容是
001,003,006,008,010这几个文件,和其中的一些图片。

测试图片
http://pan.baidu.com/s/1bn6rzgN
1

评分人数

    • pcl_test: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 尘丶 于 2015-9-12 15:27 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /s *.jpg') do (
  3.     if not %%~na equ 1 if not %%~na equ 2 if not %%~na equ 3 if not %%~na equ 4 if not %%~na equ 5 if not %%~na
  4. equ 7 if not %%~na equ 15 if not %%~na equ 16 (
  5.     set "str=%%~dpa"
  6.     set "str=!str:~0,-1!"
  7.     for /f "delims=" %%b in ("!str!") do set str2=%%~nb
  8.     md e:\100\!str2! >nul 2>nul
  9.     copy "%%a" e:\100\!str2!
  10. )
  11. )
  12. pause
复制代码
心累~努力,为了美好的明天。

TOP

回复 2# 尘丶


    嗯,刚会这个疑问,因为很多时候6图都分重复的,能否实现连文件夹也生成呢?

TOP

回复 3# 228630386


    已修改
1

评分人数

心累~努力,为了美好的明天。

TOP

本帖最后由 回家路上 于 2015-9-12 16:04 编辑
  1. @echo off
  2. :: 目标文件夹
  3. set dest=E:\描述图提取\
  4. :: 图片根目录,批处理所在文件夹,可修改
  5. set rootpath=%~dp0
  6. :: 要拷贝的文件夹
  7. set res=001,003,006,008,010
  8. :: 要排除的图片
  9. set exc=1,2,3,4,5,7,15,16
  10. for %%i in (%res%) do (
  11. pushd %rootpath%%%i\
  12. for /f "delims=" %%j in ('dir *.jpg /b /a-d') do (
  13. for %%a in (%exc%) do if "%%~nj" equ "%%a" set f=1
  14. if not defined f xcopy /y %%~fj %dest%%%i\
  15. set "f="
  16. )
  17. popd
  18. )
  19. pause & exit /b
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 4# 尘丶


    可以了,命令实在太强大了,不但速度快,准确还100%。
    如果命令在服务器中运行,应该也可以实现吧?这要回到公司才能测试。。非常感谢,在工作中可以省下不小时间!

TOP

回复 5# 回家路上


    因为每次图片可能在不同的文件夹中的,如果指定的话,用到其它文件夹中就不能实行。

TOP

回复 7# 228630386


额,我指定的也是当前文件夹。(⊙﹏⊙)b
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 8# 回家路上


    set res=001,003,006,008,010
 哪这个是什么意思呢?

TOP

回复 9# 228630386


行吧,你问题已经解决了就行了。
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

通常都是从客户端访问服务器进行文件下载,LZ却要从服务器直接分发文件到客户端,那么,客户端设置了可写的权限没?

TOP

回复 11# pcl_test

因为图片都是放在服务器中的,如果不能实现在服务器中操作,只能整个文件夹拷在本地中再运行命令。
客户端设置了可写的权限没?这个我也不太清楚,不过之前写了一些命令都是要本机运行,然后在服务器复制下来做备份。

TOP

回复 2# 尘丶


    你好,批处理中能否也可以生成当前文件的文件名,如果“测试文件”中下有多个带有多个提取的结果。
   “测试文件”这个文件名能否也能生成,具体文件名每次都不同,应该是在md后面改的,但我改了不可以,求指点。

TOP

本帖最后由 尘丶 于 2015-9-14 18:38 编辑

当前文件名字
FOR
命令中的变量  FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法! 先把FOR的变量全部列出来:      
~I       - 删除任何引号("),扩展 %I     
删除引号规则如下(BAT兄补充!)  1、若字符串首尾同时存在引号,则删除首尾的引号; 2、若字符串尾不存在引号,则删除字符串首的引号;  3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除。 龙卷风补充:无头不删,有头连尾删。
%%i:文件完整信息
%~fI     - 将 %I 扩展到一个完全合格的路径名     
%~dI     - 仅将 %I 扩展到一个驱动器号     
%~pI     - 仅将 %I 扩展到一个路径     
%~nI     - 仅将 %I 扩展到一个文件名     
%~xI     - 仅将 %I 扩展到一个文件扩展名     
%~sI     - 扩展的路径只含有短名     
%~aI     - 将 %I 扩展到文件的文件属性     
%~tI     - 将 %I 扩展到文件的日期/时间     
%~zI     - 将 %I 扩展到文件的大小      
如果不清楚最好另外发个帖子提问再加上要求和图片那样,直接描述比较难懂
心累~努力,为了美好的明天。

TOP

回复 14# 尘丶


应该在你给的基础上修改就可以了,因为每个品牌提取都不同,想这个也能生成文件名,然后文件名内就是提取的结果。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /s *.jpg') do (
  3.     if not %%~na equ 1 if not %%~na equ 2 if not %%~na equ 3 if not %%~na equ 4 if not %%~na equ 5 if not %%~na
  4. equ 7 if not %%~na equ 15 if not %%~na equ 16 (
  5.     set "str=%%~dpa"
  6.     set "str=!str:~0,-1!"
  7.     for /f "delims=" %%b in ("!str!") do set str2=%%~nb
  8.     md e:\100\!str2! >nul 2>nul
  9.     copy "%%a" e:\100\!str2!
  10. )
  11. )
  12. pause
复制代码

TOP

返回列表