标题: [文件操作] 求助批处理如何根据txt列表模糊查找源文件夹目录然后移动到带源路径的新目标目录? [打印本页]
作者: fang139842 时间: 2023-1-16 23:30 标题: 求助批处理如何根据txt列表模糊查找源文件夹目录然后移动到带源路径的新目标目录?
各位大佬
请问一下如何根据txt文件内的列表模糊查找源文件夹目录然后移动到带源路径的新目标目录
如:已有一个 列表.txt文件 里面有
nihao.txt
wenjian
ceshi.jpg
rem 其中wenjian是不带后缀的 可以复制任何后缀的出去
源目录结构是下面这样的:
源目录\A\B\nihao.txt
源目录\A\C\wenjian.txt
源目录\A\C\wenjian.jpg
源目录\A\D\ceshi.jpg
源目录的复制到目标目录后是这样的:
目标目录\A\B\nihao.txt
目标目录\A\C\wenjian.txt
目标目录\A\C\wenjian.jpg
目标目录\A\D\ceshi.jpg
小弟在跪谢过各位大佬!!
作者: qixiaobin0715 时间: 2023-1-17 10:15
本帖最后由 qixiaobin0715 于 2023-1-17 10:57 编辑
回复 1# fang139842
1.批处理文件与文件名列表文件list.txt放在同一目录;
2.假设源文件目录为:D:\abc;目标目录为:D:\123;
3.批处理文件与列表文件均存为ANSI编码:- @echo off
- set SourceFolder=D:\abc
- set TargetFolder=D:\123
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (list.txt) do (
- cd /d "%SourceFolder%"
- if "%%~xa"=="" (
- for /f "delims=" %%i in ('dir /b /s /a-d "%%a.*"') do (
- set str=%%~dpi
- md "%TargetFolder%!str:%cd%=!">nul 2>nul
- copy "%%i" "%TargetFolder%!str:%cd%=!">nul 2>nul
- ) else (
- for /f "delims=" %%i in ('dir /b /s /a-d "%%a"') do (
- set str=%%~dpi
- md "%TargetFolder%!str:%cd%=!">nul 2>nul
- copy "%%i" "%TargetFolder%!str:%cd%=!">nul 2>nul
- )
- )
- )
- pause
复制代码
代码未经测试。
作者: qixiaobin0715 时间: 2023-1-17 10:55
本帖最后由 qixiaobin0715 于 2023-1-17 10:56 编辑
简化以上代码:- @echo off
- set SourceFolder=D:\abc
- set TargetFolder=D:\123
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (list.txt) do (
- cd /d "%SourceFolder%"
- if "%%~xa"=="" (
- set "str=%%a.*"
- ) else (
- set "str=%%a"
- )
- for /f "delims=" %%i in ('dir /b /s /a-d "!str!"') do (
- set str=%%~dpi
- md "%TargetFolder%!str:%cd%=!">nul 2>nul
- copy "%%i" "%TargetFolder%!str:%cd%=!">nul 2>nul
- )
- )
- pause
复制代码
作者: fang139842 时间: 2023-1-17 13:02
回复 3# qixiaobin0715
大哥威武 大哥牛逼 对大哥敬仰佩服的五体投地
作者: terse 时间: 2023-1-18 20:33
xcopy可以- @echo off & setlocal enabledelayedexpansion
- rem 保存为ANSI格式
- set "source=d:\123\"
- set "destination=d:\abc\"
- for /f "delims=" %%a in (list.txt) do (
- if "%%~xa"=="" ( set "str=%%a.*" ) else set "str=%%a"
- for /f "delims=" %%i in ('dir /b /s /a-d "%source%!str!"') do (
- set "ph=%%~dpi"
- xcopy /y "%%i" "%destination%!ph:*%source%=!" >nul
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |