Board logo

标题: [文件操作] 批处理怎么查找子文件夹下的特定文件? [打印本页]

作者: tangwei94054    时间: 2019-12-25 15:53     标题: 批处理怎么查找子文件夹下的特定文件?

  1. pause
  2. md 123456
  3. @echo off
  4. for /F "delims=" %%a in (复制文件名称.txt) do (copy /y "F:\789\%%a.*" "F:\123456\")
  5. 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
这种的吗?
  1. SetLocal EnableDelayedExpansion
  2. rem 说明:批处理必须在789的目录,必须拖拽复制到的目录到批处理上[非文件],否则无法获取,或手动更改路径
  3. cd/d "%~dp0"
  4. if /i "%~f1"=="" echo,错误,拖拽复制到目录&&pause&&exit
  5. for /f "delims=" %%j in ('dir/a-d/s/b ".\*.*"')do if not "%~f0"=="%%~fj" if /i not "%%~nxj"=="复制文件名称.txt" (
  6.   set "路径去除=%%~fj"
  7.   set "路径去除=!路径去除:%cd%=!"
  8.   set "通配对比="&set "完整对比="
  9.   for /f "delims=" %%k in ("!路径去除!")do (
  10.    for /f "delims=" %%a in (复制文件名称.txt) do (rem //文件内容必须完整名称或完整路径自动获取名称
  11.     set "通配对比临时处理=%%~nj"
  12.     if /i not "%%~nj"=="!通配对比临时处理:%%~na=!" if not defined 完整对比 set "通配对比=true"
  13.     if /i "%%~nj"=="%%~na" if not defined 完整对比 set "完整对比=true"
  14.    )
  15.   if defined 完整对比 (
  16.    rem echo,完整文件名对比成功: !完整对比! %%~pk %%~fj&&rem //导出文本
  17.    echo,xcopy/y "%%~fj" "%~f1%%~pk"
  18.   )else if defined 通配对比 (
  19.    rem echo,部分文件名对比成功: !通配对比! %%~pk %%~fj&&rem //导出文本
  20.    echo,xcopy/y "%%~fj" "%~f1%%~pk"
  21.   )
  22.   if not defined 完整对比 if not defined 通配对比  echo,文件名对比失败&&rem //导出文本
  23.   )
  24. )
  25. pause
  26. exit
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2