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

[文本处理] [分享]批处理根据xpl文件内容复制文件

[复制链接]
发表于 2023-8-21 18:17:37 | 显示全部楼层 |阅读模式
【问题描述】
  1. @echo off
  2. cd /d "%~dp0"
  3. set "NewFolder=我自己创建的"
  4. if not exist "%NewFolder%" (
  5.     md "%NewFolder%"
  6. )
  7. for /f "delims=" %%i in ('dir /b /a-d *.xpl') do (
  8.     echo --- %%i
  9.     for /f tokens^=2^ delims^=^" %%a in ('type "%%i" ^| findstr "filename"') do (
  10.         set "MyFile=%%a"
  11.         setlocal enabledelayedexpansion
  12.         set "MyFile=!MyFile:\\isilon.zf.com\ADASdata\=Z:\!"
  13.         echo xcopy /y "!MyFile!" "!NewFolder!"
  14.         xcopy /y "!MyFile!" "!NewFolder!"
  15.         endlocal
  16.     )
  17. )
  18. pause
复制代码
就是针对上周的脚本又出现了新的需求
1.每个xpl文件里面读取的文件放到以xpl文件命名的文件夹
2.根据读取到的xpl文件内容找到前两分钟和后一分钟的文件

https://pan.baidu.com/s/1BTfzhFcD18uvPoGjFjQRlA?pwd=9wf4
就以这个为例
里面的文件名最后是619.sdf
往前两分钟就是617,618,往后一分钟就是620
最小的是001.sdf,最大的是999.sdf
不会超过这个区间
 楼主| 发表于 2023-8-21 18:18:00 | 显示全部楼层
【解决方案】

放到以xpl文件命名的文件夹.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /a-d *.xpl') do (
  4.     echo --- %%i
  5.     for /f tokens^=2^ delims^=^" %%a in ('type "%%i" ^| findstr "filename"') do (
  6.         set "MyFile=%%a"
  7.         setlocal enabledelayedexpansion
  8.         set "MyFile=!MyFile:\\isilon.zf.com\ADASdata\=Z:\!"
  9.         set "NewFolder=%%~ni"
  10.         if not exist "!NewFolder!" (
  11.             md "!NewFolder!"
  12.         )
  13.         echo xcopy /y "!MyFile!" "!NewFolder!"
  14.         xcopy /y "!MyFile!" "!NewFolder!"
  15.         endlocal
  16.     )
  17. )
  18. pause
复制代码
 楼主| 发表于 2023-8-21 18:18:33 | 显示全部楼层
1+2.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /a-d *.xpl') do (
  4.     echo --- %%i
  5.     for /f tokens^=2^ delims^=^" %%a in ('type "%%i" ^| findstr "filename"') do (
  6.         set "MyFile=%%a"
  7.         setlocal enabledelayedexpansion
  8.         set "MyFile=!MyFile:\\isilon.zf.com\ADASdata\=Z:\!"
  9.         set "NewFolder=%%~ni"
  10.         if not exist "!NewFolder!" (
  11.             md "!NewFolder!"
  12.         )
  13.         echo xcopy /y "!MyFile!" "!NewFolder!"
  14.         xcopy /y "!MyFile!" "!NewFolder!"
  15.         set "FileThis=1!MyFile:~-7,3!"
  16.         set /a FileBefore2=FileThis-2
  17.         set /a FileBefore1=FileThis-1
  18.         set /a FileAfter1=FileThis+1
  19.         if !FileThis! equ 1001 (
  20.             xcopy /y "!MyFile:~0,-8!!FileAfter1:~1!%%~xa" "!NewFolder!"
  21.         ) else if !FileThis! equ 1002 (
  22.             xcopy /y "!MyFile:~0,-8!!FileBefore1:~1!%%~xa" "!NewFolder!"
  23.             xcopy /y "!MyFile:~0,-8!!FileAfter1:~1!%%~xa" "!NewFolder!"
  24.         ) else if !FileThis! equ 1999 (
  25.             xcopy /y "!MyFile:~0,-8!!FileBefore2:~1!%%~xa" "!NewFolder!"
  26.             xcopy /y "!MyFile:~0,-8!!FileBefore1:~1!%%~xa" "!NewFolder!"
  27.         ) else (
  28.             xcopy /y "!MyFile:~0,-8!!FileBefore2:~1!%%~xa" "!NewFolder!"
  29.             xcopy /y "!MyFile:~0,-8!!FileBefore1:~1!%%~xa" "!NewFolder!"
  30.             xcopy /y "!MyFile:~0,-8!!FileAfter1:~1!%%~xa" "!NewFolder!"         
  31.         )
  32.         endlocal
  33.     )
  34. )
  35. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

发表于 2023-8-22 07:59:32 | 显示全部楼层
1+2.bat
Batcher 发表于 2023-8-21 18:18



    谢谢分享
发表于 2023-8-22 09:17:52 | 显示全部楼层
鼓励辛苦了!学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 15:34 , Processed in 0.019748 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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