![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 18:33 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]求一种特殊的COPY文件到目标地方的源代码 |
| 可打印版本 883 / 11 |
| 第1楼 0102034 | 发表于 2007-09-07 00:37 |
| 初级用户 发帖 26 积分 66 | |
|
[求助]求一种特殊的COPY文件到目标地方的源代码 求一种特殊的COPY文件到目标地方的源代码
一个运行中的批处理,用鼠标拖放一个文件到运行界面上光标处,则自动拷贝被拖放文件到指定目录下面! |
|
| 第2楼 jmz573515 | 发表于 2007-09-07 07:29 |
| 银牌会员 发帖 464 积分 1,212 | |
| 第3楼 0102034 | 发表于 2007-09-07 10:50 |
| 初级用户 发帖 26 积分 66 | |
|
谢谢了,不知我可不可以得寸进尺的再加个要求:
这个P只能一次拖放一个文件,可不可以多拖放几个,我发现用“,”是不行的,如果拖放一个文件夹的话则会拷贝这个文件夹中的所有文件到目标处,如何直接在目标处建立要拖放的文件夹。 |
|
| 第4楼 slore | 发表于 2007-09-07 13:17 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
SET /P 不支持拖动多个文件^
你可以用%1 %2……BAT的参数,不过……这样是把文件拖到BAT文件上,而不是窗口中 MD是建立……copy是复制…… |
|
| 第5楼 dy2003310 | 发表于 2007-09-08 12:43 |
| 初级用户 发帖 68 积分 180 来自 China | |
|
路过 抛半块砖 code [copy to clipboard]
@echo off set /p des=请输入要复制到的路径(例如e:\或其它) set /p path=请拖文件来 echo %path% >1.txt for /l %%a in (1,1,20) do ( for %%j in (j) do call :ok %%a %%j ) del /f 1.txt goto:eof :ok for /f "delims=, tokens=%1" %%i in (1.txt) do copy %%i %des% |
|
| 第6楼 0102034 | 发表于 2007-09-10 13:21 |
| 初级用户 发帖 26 积分 66 | |
|
回5楼 先谢谢你了,我看了你的方法,和2楼的不同之处再于存放目标的输入。
不晓得你还有没有什么之法支持多个文件的拖放呢? |
|
| 第7楼 dy2003310 | 发表于 2007-09-10 15:33 |
| 初级用户 发帖 68 积分 180 来自 China | |
|
是么
拖完一个后用逗号分隔 你再试试我那代码 |
|
| 第8楼 dy2003310 | 发表于 2007-09-10 15:37 |
| 初级用户 发帖 68 积分 180 来自 China | |
Originally posted by 0102034 at 2007-9-7 10:50 AM: 我将楼主的意思理解为 : 拖完一个后加逗号,再拖,再逗号,再拖 |
|
| 第9楼 0102034 | 发表于 2007-09-11 10:42 |
| 初级用户 发帖 26 积分 66 | |
|
我之前已经试过了,用“,”是不行的,4楼的slore说 /p 是不支持多个的,不晓得如何解决?
dy2003310:我对你的那个 for 后面的两句不是很了解,可以解释一下,谢谢先了!path |
|
| 第10楼 0102034 | 发表于 2007-09-11 11:43 |
| 初级用户 发帖 26 积分 66 | |
|
我刚才发现一个问题,凡是文件名中含有“+”或“,”等一些特殊字符的,就不能够执行拷贝的动作。
对于这个我理解为:这些符号和P的一些命令相冲突,所以P不能识别拖放后的内容到底是文件名还是命令行。 不晓得这样的理解对不对,对的话,还有那些WINDOWS界面下文件名中可允许存在但在这种情况下不能拷贝的特殊字符还有哪些? |
|
| 第11楼 dy2003310 | 发表于 2007-09-12 15:19 |
| 初级用户 发帖 68 积分 180 来自 China | |
|
汗,俺也是菜鸟.只能回答我目前能回答的 1. 我的思路:
(1)因为即使已选定几个文件, 但拖到那窗口时, 只显示出其中一个文件的 路径 (2)所以我拖完一个文件后,用逗号隔开(这里对应 for /f "delims=, tokens=%1" %%i in (1.txt) do copy %%i %des% 这一代码中的 delims=, ) 这也是楼主所说的 我刚才发现一个问题,凡是文件名中含有“+”或“,”等一些特殊字符的,就不能够执行拷贝的动作。 的一个原因 因为","已经用来作分隔号 至于"+"为什么不能,俺现在太菜,呵呵 (3)如此这般,呵呵,那个窗口就出现了如下情形: "d:\a.txt","d:\b.txt","d:\c.txt","d:\d.txt"……(这是在我的机上的实验) 即是出现了所有要复制的文件的路径,且这此路径是被逗号分隔开的 (4)接着下来就是将 "d:\a.txt","d:\b.txt","d:\c.txt","d:\d.txt"…… 这些路径保存到1.txt这个文本文件中( 对应 echo %path% >1.txt 这一句) 于是1.txt 中的内容为 "d:\a.txt","d:\b.txt","d:\c.txt","d:\d.txt"…… (5)接下来的for 就是将1.txt中的内容变成如下形式 "d:\a.txt" "d:\b.txt" "d:\c.txt" "d:\d.txt" …… 因为 ( copy %%i %des% )这句中的%%i 就是代表"d:\a.txt"等 汗,不会表达~~ 代码中的三句for 涉及到的知识主要是: ⑴如何将变量赋给for中的tokens 对应帖子 http://www.cndos.net/forum/viewthread.phptid=29556&fpage=1&highlight=tokens ⑵调用过程并传递参数(不知是不是这样表达) 呵呵 对应 call :ok %%a %%j 这一句 |
|
| 第12楼 dy2003310 | 发表于 2007-09-12 15:34 |
| 初级用户 发帖 68 积分 180 来自 China | |
|
for /l %%a in (1,1,20) do ( ::%%a 代表文件路径
for %%j in (j) do call :ok %%a %%j ::%%j 代表参数tokens ) del /f 1.txt goto:eof :ok for /f "delims=, tokens=%1" %%i in (1.txt) do copy %%i %des% :: %1表示参数%%a :: call :ok %%a %%j 这句中, %%a 表示参数%1 %%j表示参数%2 汗,说不下去了,俺的表达能力实在不行 楼主多看看关于for的帖子,还有关于参数的帖子应该就搞掂了 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |