根据文件路径批量复制文件

查看 82|回复 9
作者:gcb119   
示例
D:\监控系统台账\海康威视摄像头批量截图\image\20230504\文件内有 1.jpg    2.jpg    3.jpg   ……130.jpg
D:\监控系统台账\海康威视摄像头批量截图\image\20230503\文件内有 1.jpg    2.jpg    3.jpg   ……130.jpg
D:\监控系统台账\海康威视摄像头批量截图\image\20230502\文件内有 1.jpg    2.jpg    3.jpg   ……130.jpg
D:\监控系统台账\海康威视摄像头批量截图\image\20230501\文件内有 1.jpg    2.jpg    3.jpg   ……130.jpg
……
上面的路径已经可以自行在excel里批量生成。求一个程序:
要求,
1、批量把所有1.jpg复制到一个文件下,按顺序自动重命名  最好的取上级文件夹名,如202305011.jpg   202305021.jpg
2、实际文件名文件名可自定义(楼主的实际文件名是局域网ip地址,搞监控的网友都懂的)
谢谢

批量, 文件

jyjjf   

Excel都会批量了,你来个copy命令也用Excel批量生成啊
jyjjf   

你完全可以用譬如这样的命令,譬如copy c:\temp1\*.jpg  c:\aaa\20240501*.jpg
gcb119
OP
  


jyjjf 发表于 2023-5-6 21:31
Excel都会批量了,你来个copy命令也用Excel批量生成啊

感谢回复,excel批量是因为这个文件都有规律。
beef   

@echo off && setlocal && setlocal enabledelayedexpansion
set srcRoot= %~f1
set destRoot= %~f2
if not %srcRoot:~-1% == \  (
        set srcRoot=%srcRoot%\
)
if not %destRoot:~-1% == \  (
        set destRoot=%destRoot%\
)
for /f "delims=;" %%i in ('dir /s/q %srcRoot%*1.jpg') do (
        if /i "%%~nxi" == "1.jpg" (
                call :updir "%%i"
                echo move "%%i" "%destRoot%!DirName!%%~xi"
                move "%%i" "%destRoot%!DirName!%%~xi"
        )
)
endlocal
exit /b 0
:updir
set updir=%~dp1
set updir=%updir:~0,-1%
call :getDirName "%updir%"
:getDirName
set DirName=%~n1
exit /b 0
gcb119
OP
  


beef 发表于 2023-5-6 21:51
@echo off && setlocal && setlocal enabledelayedexpansion
set srcRoot= %~f1
set destRoot= %~f2

感谢大神回复,请描述食用方法
beef   


beef 发表于 2023-5-6 21:51
@echo off && setlocal && setlocal enabledelayedexpansion
set srcRoot= %~f1
set destRoot= %~f2

保存为test.bat文件
在命令行运行
test.bat 原始文件夹 目标文件夹
示例中
test.bat D:\监控系统台账\海康威视摄像头批量截图\image\ D:\ResultDir
也可以在test.bat中直接修改
set srcRoot= D:\监控系统台账\海康威视摄像头批量截图\image\
set destRoot=D:\ResultDir\
然后双击运行
另外补一句 检测目标文件夹是否存在,不存在则创建文件夹
if not exits %destRoot% md %destRoot%
beef   

批处理脚本有误。你用的复制,请把move改成copy
beef   

@echo off && setlocal && setlocal enabledelayedexpansion
set srcRoot= %~f1
set destRoot= %~f2
if not %srcRoot:~-1% == \  (
        set srcRoot=%srcRoot%\
)
if not %destRoot:~-1% == \  (
        set destRoot=%destRoot%\
)
if not exits %destRoot% md %destRoot%
for /f "delims=;" %%i in ('dir /s/b "%srcRoot%*1.jpg"') do (
        if /i "%%~nxi" == "1.jpg" (
                call :updir "%%i"
                echo copy"%%i" "%destRoot%!DirName!%%~xi"
                copy"%%i" "%destRoot%!DirName!%%~xi"
        )
)
endlocal
exit /b 0
:updir
set updir=%~dp1
set updir=%updir:~0,-1%
call :getDirName "%updir%"
:getDirName
set DirName=%~n1
exit /b 0
小小涩郎   

EXCEL自带VBA的就可以处理  但是上面好像已经有结果了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部