Board logo

标题: [文件操作] [已解决]求助查错批处理查找同名文件并覆盖替换提示“命令语法错误” [打印本页]

作者: mqi666    时间: 2016-7-14 15:33     标题: [已解决]求助查错批处理查找同名文件并覆盖替换提示“命令语法错误”

求助高手一下!D:\Form_TM\Form.api 这个文件  
在C盘
C:\Program Files\Founder\Apabi Reader 4.0\Plugins
C:\program files(x86)\Founder\Apabi Reader 4.0\Plugins  
这两个文件夹内查找同名文件并替换
但是W7  W10系统替换系统文件 需要以管理员方式运行
这个BAT怎么做??

命令语法错误 哪位高手帮帮忙看看是哪里有问题!!
  1. @echo off&setlocal enabledelayedexpansion
  2. set "file=C:\Form_TM\Form.api
  3. for %%i in ("%file%") do set name=%%~nxi
  4. for %%i in (C) do (
  5. echo,正在查找%%i:中的同名文件...
  6. set choice=null
  7. for /f "delims=" %%j in ('dir /b /s %%i:\%name% 2^>nul') do (
  8. if not "%file%"=="%%j" (set /p choice=需要替换【%%j】吗?(Y/N^)) else (set choice=noneed)
  9. if /i "!choice!"=="Y" copy /y "%file%" %%j
  10. )
  11. if /i "!choice!"=="null" echo,没有找到同名文件。
  12. if /i "!choice!"=="noneed" echo,没有找到其他同名文件。
  13. echo,
  14. )
  15. echo,已按要求完成所有替换,按任意键退出...
  16. pause>nul
复制代码

作者: mqi666    时间: 2016-7-14 15:39

咋没人回啊???
作者: mqi666    时间: 2016-7-14 15:39

到底是哪有问题呀??
作者: mqi666    时间: 2016-7-14 15:44

晕死!!看来这边也没啥高手啊!
这么简单的问题都处理不了!!
作者: mqi666    时间: 2016-7-14 15:45

解决冲20QB
作者: GNU    时间: 2016-7-14 18:10

把报错信息发出来看看
作者: 回家路上    时间: 2016-7-14 20:35

  1. set "file=C:\Form_TM\Form.api
复制代码

作者: gawk    时间: 2016-7-14 21:19

回复 7# 回家路上


我的Win7测试这里没有报语法错,你用什么环境测的?
作者: codegay    时间: 2016-7-15 05:15

别这么傻B。只是你自己不会。不是别人会。
作者: 回家路上    时间: 2016-7-15 11:40

回复 8# gawk


哦,这么写确实行,我一眼看去,以为右边少个双引号呢。试了确实还能正确解析。

整个脚本我试了,没错。估计楼主是一时兴起发着玩的吧。也没说错误。
而或许只是脚本没达到自己设想效果而不是错。
作者: mqi666    时间: 2016-7-15 16:45

运行后输入Y就有这个提示了
作者: mqi666    时间: 2016-7-15 16:46

W7 环境下运行的
作者: mqi666    时间: 2016-7-15 16:48

怎么改成找到后直接替换啊!!不用输入Y的
作者: mqi666    时间: 2016-7-15 16:56

找到文件后直接替换这边该怎么写啊???

set choice=null
for /f  "delims=" %%j in ('dir /b /s %%i:\%name% 2^>nul') do (
if not "%file%"=="%%j" (set /p choice=需要替换【%%j】吗?(Y/N^)) else (set choice=noneed)
if /i "!choice!"=="Y" copy/y "%file%" %%j
)
if /i "!choice!"=="null" echo,没有找到同名文件。
if /i "!choice!"=="noneed" echo,没有找到其他同名文件。
echo,
)

解决问题后发微信30元红包!!谢谢 或者充20 Q币
作者: GNU    时间: 2016-7-15 17:47

回复 11# mqi666


if /i "!choice!"=="Y" copy /y "%file%" "%%j"
初步猜测是这里少了双引号

如果仍然有问题,请把 @echo off 删掉重新执行,看看具体哪个命令在报错。
作者: CrLf    时间: 2016-7-15 19:53

回复 15# GNU


    估计是...
作者: mqi666    时间: 2016-7-17 12:54

星期1看看!!!不再办公室
作者: mqi666    时间: 2016-7-18 09:14

回复 15# GNU


    这位老师说的非常对!就是这个双引号问题!我想直接替换该怎么弄!!不需要输入Y N 的
作者: mqi666    时间: 2016-7-18 10:07

回复 15# GNU


    这问老师把微信号发给我!我转帐给你
作者: GNU    时间: 2016-7-18 10:35

回复 19# mqi666


请替我捐给论坛吧,谢谢。
支付宝账号 batcher.li@gmail.com
http://bbs.bathome.net/thread-10403-1-1.html
作者: GNU    时间: 2016-7-18 10:43

回复 18# mqi666
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "file=C:\Form_TM\Form.api"
  4. for %%i in ("%file%") do set "name=%%~nxi"
  5. for %%i in (C) do (
  6.     echo,正在查找%%i:中的同名文件...
  7.     for /f "delims=" %%j in ('dir /b /s "%%i:\%name%" 2^>nul') do (
  8.         if not "%file%"=="%%j" (
  9.             copy /y "%file%" "%%j"
  10.         )
  11.     )
  12. )
  13. echo,已按要求完成所有替换,按任意键退出...
  14. pause>nul
复制代码

作者: mqi666    时间: 2016-7-18 12:56

回复 20# GNU


    已转30元
作者: Batcher    时间: 2016-7-18 13:14

回复 22# mqi666


收到,谢谢。
作者: mqi666    时间: 2016-7-18 16:36

问题!已解决!在哪弄啊




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