找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 70669|回复: 23

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

[复制链接]
发表于 2016-7-14 15:33:23 | 显示全部楼层 |阅读模式
求助高手一下!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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2016-7-14 15:39:09 | 显示全部楼层
咋没人回啊???
 楼主| 发表于 2016-7-14 15:39:29 | 显示全部楼层
到底是哪有问题呀??
 楼主| 发表于 2016-7-14 15:44:00 | 显示全部楼层
晕死!!看来这边也没啥高手啊!
这么简单的问题都处理不了!!

评分

参与人数 1PB -4 收起 理由
lxzzr -4 不要动不动就高手什么的,还是谦虚低调点好 ...

查看全部评分

 楼主| 发表于 2016-7-14 15:45:40 | 显示全部楼层
解决冲20QB
发表于 2016-7-14 18:10:48 | 显示全部楼层
把报错信息发出来看看
发表于 2016-7-14 20:35:10 | 显示全部楼层
  1. set "file=C:\Form_TM\Form.api
复制代码
发表于 2016-7-14 21:19:35 | 显示全部楼层
回复 7# 回家路上


我的Win7测试这里没有报语法错,你用什么环境测的?
发表于 2016-7-15 05:15:06 | 显示全部楼层
别这么傻B。只是你自己不会。不是别人会。
发表于 2016-7-15 11:40:32 | 显示全部楼层
回复 8# gawk


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

整个脚本我试了,没错。估计楼主是一时兴起发着玩的吧。也没说错误。
而或许只是脚本没达到自己设想效果而不是错。
 楼主| 发表于 2016-7-15 16:45:37 | 显示全部楼层
运行后输入Y就有这个提示了
 楼主| 发表于 2016-7-15 16:46:21 | 显示全部楼层
W7 环境下运行的
 楼主| 发表于 2016-7-15 16:48:05 | 显示全部楼层
怎么改成找到后直接替换啊!!不用输入Y的
 楼主| 发表于 2016-7-15 16:56:43 | 显示全部楼层
找到文件后直接替换这边该怎么写啊???

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币
发表于 2016-7-15 17:47:16 | 显示全部楼层
回复 11# mqi666


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

如果仍然有问题,请把 @echo off 删掉重新执行,看看具体哪个命令在报错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 15:09 , Processed in 0.017745 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表