中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]文件的替换判断 上一主题 | 下一主题
coldface
初级用户





积分 71
发帖 70
注册 2010-7-19
状态 离线
『楼 主』:  [求助]文件的替换判断

需求:
用某文件夹下的文件替换另一文件夹下(包含子目录)的文件。
对用户输入的文件路径做判断,如果为空则报错,如果路径不存在则报错。
如果文件为空则报错。如果输入的路径正确且文件夹下不为空则替换到另一文件夹下,在替换完毕后提示从哪个目录下替换了多少个文件到目的目录。

基本的替换工作完成了,但是对判断那块不成功:
@echo off
:input
set /p Newfilepath=请输入新文件的路径(支持文件夹拖放):
set "Newfilepath=%Newfilepath:"=%"  //这句替换",是为了防止文件夹名中包含空格情况下,用鼠标拖的时候会产生"
set /p Reppath=请输入被替换文件的路径(支持文件夹拖放):
set "Reppath=%Reppath:"=%"
if "%Newfilepath%"=="请输入新文件的路径(支持文件夹拖放):" goto err
//此句是为了判断如果输入为空的情况
if "%Reppath%"=="请输入被替换文件的路径(支持文件夹拖放):" goto err
if not exist "%Newfilepath%" goto input
if not exist "%Reppath%" goto input
set n=0
for /f "delims=" %%a in ('dir/a/s/b "%Newfilepath%" ') do (
set n+=1
for /f "delims=" %%c in ('dir/ad/s/b ""%Reppath%"') do (
xcopy /y "%%a" "%%c"
goto Congra
)
)

:Congra
echo 恭喜您,%Newfilepath%下的!n!个文件已经替换到"%Reppath%
:err
echo 您未输入路径,请按键选择:
echo 1 重新输入文件路径
echo 2 退出
set choice=默认2
set /P choice=选择1,2继续(直接回车默认选择2)
if /i '%choice%'=='1' goto 1
if /i '%choice%'=='2' goto 2
if /i '%choice%'=='默认2' goto 2
:2
exit
麻烦帮忙完善下!谢谢!

2010-10-22 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
coldface
初级用户





积分 71
发帖 70
注册 2010-7-19
状态 离线
『第 2 楼』:  

我修改了下,但是怎么不支持中文文件夹或者中文命名的文件的复制的?
@echo off&setlocal ENABLEDELAYEDEXPANSION
color 34
set /p Newfilepath=请输入新文件的路径(支持文件夹拖放后回车):
echo ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
echo 请输入被替换文件的路径
echo 1 默认路径c:\gameserver               
echo 2 请输入新文件的路径(支持文件夹拖放后回车):
echo ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
set choice=默认1
set /P choice=选择1,2继续(直接回车默认选择1)
if /i '%choice%'=='1' goto P1
if /i '%choice%'=='2' goto P2
if /i '%choice%'=='默认1' goto P1
:P1
set "Newfilepath=%Newfilepath:"=%"
for /f "delims=" %%a in ('dir/a/s/b "%Newfilepath%" ') do (

for /f "delims=" %%c in ('dir/ad/s/b "c:\gameserver"') do (
xcopy /y "%%a" "%%c"
goto Congra

)

)
:P2
set /p Replpath2=请输入被替换文件的路径(支持文件夹拖放后回车):
set "Newfilepath=%Newfilepath:"=%"
set "Replpath2=%Replpath2:"=%"
for /f "delims=" %%f in ('dir/a/s/b "%Newfilepath%" ') do (

for /f "delims=" %%g in ('dir/ad/s/b "%Replpath2%"') do (
xcopy /y "%%f" "%%g"

goto Congra
)

)
:Congra
echo ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
echo                  成功复制
echo ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
pause

2010-10-22 15:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: