![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 11:39 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理选择性复制文件一直没成功,求解决 |
| 可打印版本 2,261 / 11 |
| 第1楼 evilangell | 发表于 2010-10-20 10:16 |
| 初级用户 发帖 32 积分 32 | |
|
批处理选择性复制文件一直没成功,求解决 选择性复制文件.BAT
功能: 1:如果此批处理还未运行,我拖放一个文件(或几个文件)到这个P处理图标上,然后可以根据选择将这个文件(或这几个文件)复制到指定位置,如按1复制到C盘根目录,按2复制到c:\windows目录,按3退出。 2:如果我已经将这个批处理双击,那么,我拖放一个文件(或几个文件)到这个P处理上窗口上,然后可以根据选择将这个文件(或这几个文件)复制到指定位置,如按1复制到C盘根目录,按2复制到c:\windows目录,按3退出。 小弟试了好久一直没成功,请大牛帮忙一下,谢谢 |
|
| 第2楼 evilangell | 发表于 2010-10-20 10:19 |
| 初级用户 发帖 32 积分 32 | |
|
:again
echo. if "%~f1" neq "" (set FullPathName=%~f1) else (goto ADD) :ADD set FullPathName=%~f1 ECHO %FullPathName% @set choice @set /p choice= 请选择【1→windows目录下】,【2→system32目录下】,【3→C盘】 echo. set FullPathName=%~f1 ::IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1% PAUSE echo. if /i "%choice%"=="1" goto windows if /i "%choice%"=="2" goto system32 if /i "%choice%"=="3" goto CC echo. ECHO 选项不对,按任意键退出 pause exit :windows ECHO "%FullPathName%" 将被复制到windows目录下 COPY "%FullPathName%" %SYSTEMROOT%\ pause goto again :system32 ECHO "%FullPathName%" 将被复制到system32目录下 COPY "%FullPathName%" %SYSTEMROOT%\system32\ pause goto again :CC ECHO "%FullPathName%" 将被复制到C盘 COPY "%FullPathName%" C:\ pause goto again 这是草稿,乱的很,大牛别见笑 |
|
| 第3楼 evilangell | 发表于 2010-10-20 13:37 |
| 初级用户 发帖 32 积分 32 | |
|
如果不能拖放多个文件,拖放一个文件也行
|
|
| 第4楼 evilangell | 发表于 2010-10-20 16:48 |
| 初级用户 发帖 32 积分 32 | |
|
@title复制文件到指定路径下 &@color f3&CLS&echo.
:again @echo. @if "%~f1" neq "" (set FullPathName="%~f1" &goto Zhijie) else (goto InWindowns) :InWindowns @set /p choice=请拖放一个需要被复制的文件到本出口内(拖进来后请按回车): @set FullPathName=%choice% @echo. :Zhijie @set /p choice=[1→windows目录下], [2→system32目录下], [3→C盘根目录], [Q→EXIT] @IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1% @echo. @if /i "%choice%"=="1" goto windows @if /i "%choice%"=="2" goto system32 @if /i "%choice%"=="3" goto C_Disk @if /i "%choice%"=="q" EXIT @if /i "%choice%"=="Q" EXIT ::过滤因直接回车而误复制文件 @echo 【!您还未拖入任何文件!】 @goto again :windows @ECHO %FullPathName%已被复制到windows目录下 @COPY %FullPathName% %SYSTEMROOT%\ @pause @goto again :system32 @ECHO %FullPathName%已被复制到system32目录下 @COPY %FullPathName% %SYSTEMROOT%\system32\ @pause @goto again :C_Disk @ECHO %FullPathName%已被复制到C盘 ::if exist %FullPathName% (echo 文件已存在 &goto again) else (@COPY %FullPathName% C:\) @COPY %FullPathName% C:\ @pause @goto again 复制单个文件已经没问题。 有几个小缺陷: 1,没判断文件已经存在的情况 2,见图,第一次拖入文件后成功复制后,如果空按回车键,会出现如图情况,感觉选择的变量没被清空,但我加入@set /p choice=“”,没法清空。但不影响使用,望高手能来完善! |
|
| 第5楼 evilangell | 发表于 2010-10-20 16:52 |
| 初级用户 发帖 32 积分 32 | |
|
图传不上,还是我复制过来吧
以下是cmd.EXE里复制过来的: 请拖放一个需要被复制的文件到本出口内(拖进来后请按回车):"C:\Documents and Settin gs\Administrator\桌面\欧姆龙.T" [1→windows目录下], [2→system32目录下], [3→C盘根目录], [Q→EXIT] 3 "C:\Documents and Settings\Administrator\桌面\欧姆龙.T"已被复制到C盘 已复制 1 个文件。 请按任意键继续. . . 请拖放一个需要被复制的文件到本出口内(拖进来后请按回车): [1→windows目录下], [2→system32目录下], [3→C盘根目录], [Q→EXIT] 3已被复制到C盘 系统找不到指定的文件。 请按任意键继续. . . 请拖放一个需要被复制的文件到本出口内(拖进来后请按回车): [1→windows目录下], [2→system32目录下], [3→C盘根目录], [Q→EXIT] 3已被复制到C盘 系统找不到指定的文件。 请按任意键继续. . . |
|
| 第6楼 qinchun36 | 发表于 2010-10-21 18:13 |
| 高级用户 发帖 400 积分 609 | |
|
[ Last edited by qinchun36 on 2010-10-22 at 16:09 ] |
|
| 第7楼 evilangell | 发表于 2010-10-21 22:55 |
| 初级用户 发帖 32 积分 32 | |
|
如果是拖一堆东西到批处理图标上的话,只问一次复制到哪儿。
答:根据1,2,3选择对应的目录。 |
|
| 第8楼 evilangell | 发表于 2010-10-22 13:58 |
| 初级用户 发帖 32 积分 32 | |
|
有个疑问:
shift /1 什么作用? 最好文件拖到这个批处理图标上后能显示拖进来文件的文件名 |
|
| 第9楼 qinchun36 | 发表于 2010-10-22 16:13 |
| 高级用户 发帖 400 积分 609 | |
|
你不知道拖了多少个到批处理图标上,又要每个都复制,就只好用 shift 去取每个参数了。
关于 shift 的作用你去看看说明或者查查相关帖子,大概就是把后面的参数移位的意思,几句话不好说清楚的。 |
|
| 第10楼 yf6122010 | 发表于 2010-12-09 12:25 |
| 新手上路 发帖 18 积分 18 | |
|
学习...
|
|
| 第11楼 yf6122010 | 发表于 2010-12-09 12:25 |
| 新手上路 发帖 18 积分 18 | |
|
顶..下
|
|
| 第12楼 acaigg | 发表于 2010-12-25 12:20 |
| 初级用户 发帖 92 积分 115 | |
|
学习一下。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |