[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎么查找子文件夹下的特定文件?

  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.复制文件名称如果不需要扩展名。后缀名就行。只需要前面的完整文件名称。应该怎么改动一下?
谢谢各位大侠帮助。。先谢谢了

好像是这样写的,没测试
for /f "delims=" %%a in (复制文件名称.txt) do xcopy/s/e/y "F:\789\%%a*.*" "F:\123456\"|| >>错误文档.txt echo,错误:%%a
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 2# /zhqsystem/zhq


    谢谢你。现在成功了

TOP

回复 2# /zhqsystem/zhq


    就是如果文件夹里面有子文件夹他就找不到。这个有办法修改吗?

TOP

回复 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
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

返回列表