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

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

[复制链接]
发表于 2015-9-14 21:50:11 | 显示全部楼层
回复 15# 228630386
  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:\描述图读取\测试文件\!str2! >nul 2>nul
  9.     copy "%%a" e:\描述图读取\测试文件\!str2!
  10. )
  11. )
  12. pause
复制代码
这样? 不是的话你把文件和要求一起存起来 发个链接出来。
 楼主| 发表于 2015-9-14 22:20:29 | 显示全部楼层
回复 16# 尘丶


    "测试文件" 只是一个文件夹名,能否换成其它文件夹名也能自动生成,这个文件名不是固定的,可能我表达得不太好。
发表于 2015-9-14 22:48:10 | 显示全部楼层
本帖最后由 尘丶 于 2015-9-14 22:49 编辑

文件名随机吗? 随机的话有没啥规律举个例子看看可以做不
发效果图
 楼主| 发表于 2015-9-14 23:16:26 | 显示全部楼层
回复 18# 尘丶


    就是假如这些文件里面,我把命令放到这些文件夹中提取,这些文件中还有多个子文件夹,我需要提取有除了1、2、3、4、5、7、15、16图以外的图片
  我就是想保留主目录的名称。
 楼主| 发表于 2015-9-14 23:24:53 | 显示全部楼层
回复 18# 尘丶


就好像这个命令,可以保留文件夹名称的,但我又知道怎么改才行,显示命令错误的。前面的命令可以无视,这只是个例子。
发表于 2015-9-15 00:21:18 | 显示全部楼层
本帖最后由 pcl_test 于 2015-9-15 13:30 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ("%cd%") do set "f=%%~na"
  3. set "t=\\1.jpg \\2.jpg \\3.jpg \\4.jpg \\5.jpg \\7.jpg \\15.jpg \\16.jpg"
  4. for /f "delims=" %%b in ('dir /a-d /b /s *.jpg^|findstr /iev "%t%"') do (
  5.     set "p=%%~dpb"
  6.     set "p=!p:%cd%\=!"
  7.     xcopy "%%b" "E:\描述图提取\%f%\!p!" /y
  8. )
  9. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
228630386 + 1 感谢分享

查看全部评分

 楼主| 发表于 2015-9-15 00:32:27 | 显示全部楼层
回复 21# pcl_test


    非常感谢,又一次帮到我了,真心谢谢各位大侠!!!
 楼主| 发表于 2015-9-15 11:02:42 | 显示全部楼层
回复 21# pcl_test

亲,又遇到一个新问题了,因为文件名有日期排在前面的,但建出来的文件名只有 "9",
是否类似以下格式的文件名不可以实现完整一模一样的命名?

9.16【图片】天线宝宝衣服专场 五区 192款 业务部 张三(合格98款)
发表于 2015-9-15 11:53:05 | 显示全部楼层
本帖最后由 pcl_test 于 2015-9-15 13:30 编辑

回复 23# 228630386

修改for /f "delims=" %%a in ("%cd%") do set "f=%%~nxa"


另一种方式
  1. @echo off
  2. for /f "delims=" %%a in ("%cd%") do set "f=%%~nxa"
  3. set "t=\\1.jpg \\2.jpg \\3.jpg \\4.jpg \\5.jpg \\7.jpg \\15.jpg \\16.jpg"
  4. for /f "delims=" %%b in ('findstr /ms .* *.jpg^|findstr /iev "%t%"') do (
  5.     echo;f|xcopy "%cd%\%%b" "E:\描述图提取\%f%\%%b" /y
  6. )
  7. pause
复制代码
 楼主| 发表于 2015-9-15 12:39:28 | 显示全部楼层
回复 24# pcl_test


    命令真的很多变,好强大,可以了,非常感谢!
发表于 2015-9-15 13:14:59 | 显示全部楼层
加个参数呢
另 用 FINDSTR   ”\ “ 要转义

  1. @echo off
  2. for /f "delims=" %%a in ("%cd%") do set "f=%%~na"
  3. (for %%i in (1,2,3,4,5,7,15,16) do echo;\%%i.jpg)>"$"
  4. xcopy *.jpg "E:\描述图提取\%f%" /e /y /s /EXCLUDE:$
  5. del $
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
pcl_test + 1 感谢提醒

查看全部评分

发表于 2015-9-15 14:51:55 | 显示全部楼层
/EXCLUDE参数会排除所有包含字符串的文件,

例如$中含字符串1.jpg,则1.jpg、11.jpg、21.jpg等等都在排除之列
发表于 2015-9-15 15:05:06 | 显示全部楼层
回复 27# flyinnet9

echo;\%%i.jpg)>"$" 已做了限定
发表于 2015-9-15 15:14:06 | 显示全部楼层
回复 28# pcl_test


    哈哈,我还是不够仔细
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 16:05 , Processed in 0.020504 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表