标题: [文件操作] 批处理怎么查找子文件夹下的特定文件? [打印本页]
作者: tangwei94054 时间: 2019-12-25 15:53 标题: 批处理怎么查找子文件夹下的特定文件?
- pause
- md 123456
- @echo off
- for /F "delims=" %%a in (复制文件名称.txt) do (copy /y "F:\789\%%a.*" "F:\123456\")
-
- pause
复制代码
上面的代码可以复制指定文件夹下指定文件名的文件到123456,指定文件名的名称在文本 复制文件名称.txt 列出,请问大侠能修改一下代码。实现这样的功能
1.它只能找指定文件夹下。但是子文件夹他不包括。该怎么改?
2.能不能根据复制文件名称的文件名,如果有文件没有找到。生成一个没有找到的文件名单?
3.复制文件名称如果不需要扩展名。后缀名就行。只需要前面的完整文件名称。应该怎么改动一下?
谢谢各位大侠帮助。。先谢谢了
作者: /zhqsystem/zhq 时间: 2019-12-26 00:52
好像是这样写的,没测试
for /f "delims=" %%a in (复制文件名称.txt) do xcopy/s/e/y "F:\789\%%a*.*" "F:\123456\"|| >>错误文档.txt echo,错误:%%a
作者: tangwei94054 时间: 2019-12-30 01:06
回复 2# /zhqsystem/zhq
谢谢你。现在成功了
作者: tangwei94054 时间: 2019-12-30 01:36
回复 2# /zhqsystem/zhq
就是如果文件夹里面有子文件夹他就找不到。这个有办法修改吗?
作者: /zhqsystem/zhq 时间: 2019-12-31 00:33
回复 4# tangwei94054
这种的吗?
- SetLocal EnableDelayedExpansion
- rem 说明:批处理必须在789的目录,必须拖拽复制到的目录到批处理上[非文件],否则无法获取,或手动更改路径
- cd/d "%~dp0"
- if /i "%~f1"=="" echo,错误,拖拽复制到目录&&pause&&exit
- for /f "delims=" %%j in ('dir/a-d/s/b ".\*.*"')do if not "%~f0"=="%%~fj" if /i not "%%~nxj"=="复制文件名称.txt" (
- set "路径去除=%%~fj"
- set "路径去除=!路径去除:%cd%=!"
- set "通配对比="&set "完整对比="
- for /f "delims=" %%k in ("!路径去除!")do (
- for /f "delims=" %%a in (复制文件名称.txt) do (rem //文件内容必须完整名称或完整路径自动获取名称
- set "通配对比临时处理=%%~nj"
- if /i not "%%~nj"=="!通配对比临时处理:%%~na=!" if not defined 完整对比 set "通配对比=true"
- if /i "%%~nj"=="%%~na" if not defined 完整对比 set "完整对比=true"
- )
- if defined 完整对比 (
- rem echo,完整文件名对比成功: !完整对比! %%~pk %%~fj&&rem //导出文本
- echo,xcopy/y "%%~fj" "%~f1%%~pk"
- )else if defined 通配对比 (
- rem echo,部分文件名对比成功: !通配对比! %%~pk %%~fj&&rem //导出文本
- echo,xcopy/y "%%~fj" "%~f1%%~pk"
- )
- if not defined 完整对比 if not defined 通配对比 echo,文件名对比失败&&rem //导出文本
- )
- )
- pause
- exit
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |