中国DOS联盟论坛

中国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