![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 03:17 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]帮我检查下代码,问题以解决。谢谢朋友了! |
| 可打印版本 862 / 13 |
| 第1楼 hanswanky | 发表于 2007-06-26 21:10 |
| 新手上路 发帖 8 积分 18 | |
|
[求助]帮我检查下代码,问题以解决。谢谢朋友了! 帮看看为什么它要复制两次 多谢了!
@echo off cls color 0A echo. echo. echo 请输入要搜索的文件名:. set /p pth= for /f "tokens=* delims=" %%k in ('dir /s/b/a-d c:\%pth%') do echo %%k>>d:\temp.txt echo 请输入你要保存的文件夹位置:. set /p u_path= c: cd\ for /f "tokens=* delims=" %%i in (d:\temp.txt) do ( echo %%~nxi for /f "tokens=* delims=" %%j in ('dir /s/b "%%~nxi"') do copy "%%j",%u_path%\*.* ) del /f/q d:\temp.txt exit [ Last edited by hanswanky on 2007-6-27 at 01:09 PM ] |
|
| 第2楼 wudixin96 | 发表于 2007-06-26 22:02 |
| 银牌会员 发帖 931 积分 1,928 | |
|
类似的功能论坛已有讨论,可以搜索的。
|
|
| 第3楼 hanswanky | 发表于 2007-06-27 00:00 |
| 新手上路 发帖 8 积分 18 | |
|
顶上去 一定要让大家看到 帮下偶
|
|
| 第4楼 dikex | 发表于 2007-06-27 00:03 |
| 高级用户 发帖 366 积分 788 | |
|
运行dir /s/b/a-d c:\joy.cpl看看结果就可以知道了
|
|
| 第5楼 hanswanky | 发表于 2007-06-27 00:13 |
| 新手上路 发帖 8 积分 18 | |
Originally posted by dikex at 2007-6-27 12:03 AM: 我知道 它搜索出来的是两个没错 后面复制时是两个一起复制的 而且复制了两次啊 知道了 问题 就出在它一次显示了所有的路径信息 能否让它 复制一个显示一个 把代码写下 谢谢 [ Last edited by hanswanky on 2007-6-27 at 12:15 AM ] |
|
| 第6楼 dikex | 发表于 2007-06-27 00:50 |
| 高级用户 发帖 366 积分 788 | |
|
复制一个东西用不着那么多for……
|
|
| 第7楼 hanswanky | 发表于 2007-06-27 00:59 |
| 新手上路 发帖 8 积分 18 | |
Originally posted by dikex at 2007-6-27 12:50 AM: |
|
| 第8楼 terse | 发表于 2007-06-27 01:34 |
| 银牌会员 发帖 946 积分 2,404 | |
|
用call的话 如文件名有空格会出错的吧
@echo off cls color 0A echo. echo. echo 请输入要搜索的文件名: set /p pth= echo 请输入你要保存的文件夹位置: set /p u_path= for /f "delims=" %%k in ('dir /s/b/a-d c:\%pth%') do ( copy "%%k" "%u_path%\*.*" echo %%k pause ) exit 不知道是不是这样的意思 添加“” [ Last edited by terse on 2007-6-27 at 01:36 PM ] |
|
| 第9楼 hanswanky | 发表于 2007-06-27 01:37 |
| 新手上路 发帖 8 积分 18 | |
Originally posted by terse at 2007-6-27 01:34 AM: 谢谢了 这样够简单 set /p u_path= c: cd\ for /f "tokens=* delims=" %%i in (d:\temp.txt) do ( echo %%~nxi for /f "tokens=* delims=" %%j in ('dir /s/b "%%~nxi"') do copy "%%j",%u_path%\*.* ) 这段能否简化了? [ Last edited by hanswanky on 2007-6-27 at 01:44 AM ] |
|
| 第10楼 dikex | 发表于 2007-06-27 01:44 |
| 高级用户 发帖 366 积分 788 | |
|
倒,忘记处理空格了……
不过terse你在copy那里也忘了加引号了"%u_path%\*.*",呵呵 楼主在7楼的话貌似是想要从txt里面读取信息再复制,但8楼的和我上面的那个基本上差别不大的说。 |
|
| 第11楼 hanswanky | 发表于 2007-06-27 01:48 |
| 新手上路 发帖 8 积分 18 | |
Originally posted by dikex at 2007-6-27 01:44 AM: 从TEMP里读取信息其实是单独拿来从C盘里拷贝多个需要的文件的 那个特有用的 |
|
| 第12楼 dikex | 发表于 2007-06-27 01:50 |
| 高级用户 发帖 366 积分 788 | |
|
刚发现我们在dir /s/b/a-d c:\%pth%这里全都也忘记加引号了……
dir /s/b/a-d "c:\%pth%" |
|
| 第13楼 dikex | 发表于 2007-06-27 02:05 |
| 高级用户 发帖 366 积分 788 | |
|
9楼那段代码也是不需要临时文件的,而且对于这段代码临时文件是没有必要的,因为临时文件里面的所有文件都是同名的,复制到同一个文件夹里面后只会存在最后复制的一个,另外顶楼生成临时文件的那行代码没有必要用for命令;
如果想要使用临时文件的话,看下面的代码: |
|
| 第14楼 hanswanky | 发表于 2007-06-27 12:59 |
| 新手上路 发帖 8 积分 18 | |
Originally posted by dikex at 2007-6-27 02:05 AM: 第一个del /f/q d:\temp.txt 1>nul 2>nul不错 这点我都没想的 多谢指教 受教了 楼上的各位朋友 谢谢了 :lol::lol:本来昨晚就该 说的了 可是不知那该死的那网线给我夹断了 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |