批处理程序,怎样查找到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 ,那要怎么改代码 展开
回答时能说的具体些吗,提供的代码到底自己是可以自定义哪些部分,比如说文件名是 XH.doc ,那要怎么改代码 展开
1个回答
展开全部
使用说明:
复制并保存为.bat文件
将替换的文件拖放至.bat文件
已设置为检测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:"
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询