![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 02:32 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]文件的替换判断 |
| 可打印版本 993 / 1 |
| 第1楼 coldface | 发表于 2010-10-22 11:49 |
| 初级用户 发帖 70 积分 71 | |
|
[求助]文件的替换判断 需求:
用某文件夹下的文件替换另一文件夹下(包含子目录)的文件。 对用户输入的文件路径做判断,如果为空则报错,如果路径不存在则报错。 如果文件为空则报错。如果输入的路径正确且文件夹下不为空则替换到另一文件夹下,在替换完毕后提示从哪个目录下替换了多少个文件到目的目录。 基本的替换工作完成了,但是对判断那块不成功: @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 麻烦帮忙完善下!谢谢! |
|
| 第2楼 coldface | 发表于 2010-10-22 15:38 |
| 初级用户 发帖 70 积分 71 | |
|
我修改了下,但是怎么不支持中文文件夹或者中文命名的文件的复制的?
@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 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |