批处理程序,怎样查找到C盘或D盘中不确定具体路径,但知道完整文件名的文件,然后替换这个文件。

假如我的C盘或者D盘中不知道是哪个文件夹里有一个文件名为chen.exe的文件,然后我要将桌面上的一个chen.exe的文件替换掉查找到的文件,这个程序怎么写。如果che... 假如我的C盘或者D盘中不知道是哪个文件夹里有一个文件名为 chen.exe 的文件,然后我要将桌面上的一个 chen.exe 的文件替换掉查找到的文件,这个程序怎么写。如果 chen.exe在C盘某个文件夹中,但我桌面又有一个现在新的文件,是不是两个文件都找到了,那要怎么替换,如果文件 chen.exe在D盘某个文件夹中,有怎么把桌面的新的 chen.exe替换找到的那个文件
回答时能说的具体些吗,提供的代码到底自己是可以自定义哪些部分,比如说文件名是 XH.doc ,那要怎么改代码
展开
 我来答
百度网友1153044d1
推荐于2016-09-14 · TA获得超过183个赞
知道小有建树答主
回答量:302
采纳率:100%
帮助的人:259万
展开全部

使用说明:

  1. 复制并保存为.bat文件

  2. 将替换的文件拖放至.bat文件

  3. 已设置为检测C盘和D盘,如需更改,则设置drv变量,但需按照原格式更改。


代码:

@echo off
setlocal ENABLEDELAYEDEXPANSION

set "fullname=%~dpnx1"
set "filename=%~nx1"
set "drv=c:,d:"

if "%fullname%" equ "" (
echo 请拖放文件到此批处理。
>nul pause
goto:eof
)

echo 替换的文件: 
echo %fullname%
echo.
echo 被替换的文件: 
call:loop "%drv%"
echo --
pause
goto:eof


rem ///////////////////////////
:loop
for /f "tokens=1* delims=," %%j in (%1) do (
call:func %%j
)
goto:eof

rem ///////////////////////////
:func
cd\
cd /d %1
if !errorlevel! equ 1 (goto:eof)
for /f "delims=" %%i in ('dir /a/s/b %filename%') do (
if "%%i" neq "%fullname%" (
cd /d "%%~dpi"
if exist "%%~nxi.bak" (del /f "%%~nxi.bak")
ren "%%~nxi" "%%~nxi.bak"
>nul copy "%fullname%"
if !errorlevel! equ 0 (echo %%~dpnxi [OK])
)
)
goto:eof


测试结果:

替换的文件:
C:\Documents and Settings\Administrator\桌面\text.txt

被替换的文件:
C:\Documents and Settings\Administrator\桌面\键盘屏幕全能记录器-JFsky.com\键盘屏
幕全能记录器2010\data\text.txt  [OK]
C:\WINDOWS\system32\text.txt    [OK]
--
请按任意键继续. . .
更多追问追答
追问
根本就拖不进去
追答

我写的代码,不需要更改替换的文件名。直接将文件拖放到批处理上,则会自动识别文件名。

我说的第3条,是说,我代码中检测C和D盘,如果要检测E,F,G,H等等,则将变量drv更改为:

set "drv=c:,d:,e:,f:,g:,h:"
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式