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

回复 1# a6236130


    没太看明白,你是指原文件夹名和文件名称一样吗,如果一样不用那么麻烦?处理前文件什么样,处理后文件什么样,请举个例子,还有我看你是要读取所有包含0000的文件名吗?
  1. for /f  "delims=*"  %%a in ('dir /b /s /a-d "*%file_name%*"') do (
  2. echo.%%~na
  3. )
复制代码

TOP

本帖最后由 miqilaosu 于 2019-6-29 16:40 编辑

回复 3# a6236130
  1. echo on
  2. set "file_name=E:\提取\1.txt"
  3. set "DstDir=E:\提取"
  4. if not exist "%DstDir%" md "%DstDir%"
  5. for /f %%i in ('type "%file_name%"') do (
  6. for /f "delims=*" %%a in ('dir /b /s /a-d "*%%i*"') do (
  7. set "_path=%%~dpa"
  8.     setlocal enabledelayedexpansion
  9.     if /i "!_path:%DstDir%=!" equ "!_path!" (
  10.         set "_path=!_path:%~dp0=!"
  11.         set "_path=!_path:\=-!"
  12.         echo;f|xcopy "%%a" "%DstDir%\!_path:~0,-1!\%%~nxa" /y
  13.     )
  14.     endlocal
  15. )
  16. )
  17. pause
复制代码
在你的基础上改的
1.txt文件主要是你要查的文件名太多了,把要拷的名字都放里边,0000、0000-1、0000-2、kkf,等(每行一个),位置自己改吧,我搜索的是包含0000等 的文件名,如果是绝对文件名,自己对掉*号,如果是指定文件类型后缀名自己加上就行了,在DIR那修改就行
你也可以写成
  1. echo off
  2. set "file_name=0000 0000-1 0000-2 kkf"
  3. set "DstDir=E:\提取"
  4. if not exist "%DstDir%" md "%DstDir%"
  5. for /d %%i in (%file_name%) do (
  6. for /f "delims=*" %%a in ('dir /b /s /a-d "*%%i*"') do (
  7. set "_path=%%~dpa"
  8.     setlocal enabledelayedexpansion
  9.     if /i "!_path:%DstDir%=!" equ "!_path!" (
  10. set "var=%%~nxa"
  11.         set "_path=!_path:%~dp0=!"
  12.         set "_path=!_path:\=-!"
  13.         echo;f|xcopy "%%a" "%DstDir%\!_path:~0,-1!\%%~nxa" /y
  14.     )
  15.     endlocal
  16. )
  17. )
  18. pause
复制代码
1

评分人数

TOP

本帖最后由 miqilaosu 于 2019-6-29 17:19 编辑

回复 5# a6236130
直接用肯定不行,因为E:\1.txt文件没有需要后建立,你用第二种吧

TOP

本帖最后由 miqilaosu 于 2019-6-29 16:56 编辑

回复 8# a6236130
  1. if not exist "%DstDir%\!_path:~0,-1!\" md "%DstDir%\!_path:~0,-1!\"
  2.         echo Y|move "%%a" "%DstDir%\!_path:~0,-1!\%%~nxa"
复制代码
你需要先创建文件夹,还有MOVE 没有/y  不过可以用ECHO选择覆盖

TOP

本帖最后由 miqilaosu 于 2019-6-29 17:17 编辑

回复 10# a6236130


    你想移动到的文件夹,E:\提取 下的,如果不存在MOVE 不会创建文件夹的  ,我上面那两行你直接替换copy那行就行
!_path:~0,-1! 至于这个为什么 加了个不读最后一个字符是因为后面有\,虽然你已经替换成了-,但如果不去掉还是和原文件名不一样,

TOP

返回列表