中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]帮我检查下代码,问题以解决。谢谢朋友了!
作者:
标题: [求助]帮我检查下代码,问题以解决。谢谢朋友了! 上一主题 | 下一主题
hanswanky
新手上路





积分 18
发帖 8
注册 2007-6-26
状态 离线
『楼 主』:  [求助]帮我检查下代码,问题以解决。谢谢朋友了!

帮看看为什么它要复制两次   多谢了!

@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 ]

2007-6-26 21:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 2 楼』:  

类似的功能论坛已有讨论,可以搜索的。

2007-6-26 22:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hanswanky
新手上路





积分 18
发帖 8
注册 2007-6-26
状态 离线
『第 3 楼』:  

顶上去  一定要让大家看到 帮下偶

2007-6-27 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 4 楼』:  

运行dir /s/b/a-d c:\joy.cpl看看结果就可以知道了



正在潜水修练的批处理小白
2007-6-27 00:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hanswanky
新手上路





积分 18
发帖 8
注册 2007-6-26
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by dikex at 2007-6-27 12:03 AM:
运行dir /s/b/a-d c:\joy.cpl看看结果就可以知道了

我知道    它搜索出来的是两个没错   后面复制时是两个一起复制的   而且复制了两次啊




知道了  问题 就出在它一次显示了所有的路径信息  能否让它  复制一个显示一个  把代码写下   

谢谢

[ Last edited by hanswanky on 2007-6-27 at 12:15 AM ]

2007-6-27 00:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 6 楼』:  

复制一个东西用不着那么多for……
@echo off
cls
color 0C
echo.
echo.
echo 请等待.
set pth=joy.cpl
for /f "delims=" %%i in ('dir /s/b/a-d c:\%pth%') do (
   set /p u_path=请输入你要保存的文件夹位置:
   call :DOIT %%i
   pause
   goto :EOF
)

:DOIT
echo %~nx1
copy "%1" "%u_path%\"
goto :EOF




正在潜水修练的批处理小白
2007-6-27 00:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hanswanky
新手上路





积分 18
发帖 8
注册 2007-6-26
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by dikex at 2007-6-27 12:50 AM:
复制一个东西用不着那么多for……

[code]
@echo off
cls
color 0C
echo.
echo.
echo 请等待.
set pth=joy.cpl
for /f "delims=" %%i in ('dir /s/b/a-d c:\%pth%') do (
...

这样不对了啊   

我这个是自动搜索指定的C盘文件路径,然后保存在D盘TEMP.TXT文件内,在通过读取TEMP.TXT文件内的路径信息,复制文件到指定的文件夹内。


你这个是复制当前盘内的文件到指定的新文件夹内  意义不同啊!:(   相差大了


我上面指定的那个文件只是想让你们试下看看是不是同样的问题

但后来发现不是复制了两次  只是它把TEMP里面的所有文件路径全显示出来了   

我想让它复制一个显示一个  就这问题         不然进行多个文件同时搜索那路径多了  在复制时就会出现大遍的相同路径的复制信息

[ Last edited by hanswanky on 2007-6-27 at 01:03 AM ]

2007-6-27 00:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:  

用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 ]

2007-6-27 01:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hanswanky
新手上路





积分 18
发帖 8
注册 2007-6-26
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by terse at 2007-6-27 01:34 AM:
用call的话 如文件名有空格会出错的吧
@echo off
cls
color 0A
echo.
echo.
echo 请输入要搜索的文件名:
set /p pth=
echo 请输入你要保存的文件夹位置:
set /p  ...

谢谢了     这样够简单

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 ]

2007-6-27 01:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 10 楼』:  

倒,忘记处理空格了……
不过terse你在copy那里也忘了加引号了"%u_path%\*.*",呵呵

楼主在7楼的话貌似是想要从txt里面读取信息再复制,但8楼的和我上面的那个基本上差别不大的说。



正在潜水修练的批处理小白
2007-6-27 01:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hanswanky
新手上路





积分 18
发帖 8
注册 2007-6-26
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by dikex at 2007-6-27 01:44 AM:
倒,忘记处理空格了……
不过terse你在copy那里也忘了加引号了"%u_path%\*.*",呵呵

楼主在7楼的话貌似是想要从txt里面读取信息再复制,但8楼的和我上面的那个基本上差别不大的说。

从TEMP里读取信息其实是单独拿来从C盘里拷贝多个需要的文件的

那个特有用的

2007-6-27 01:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 12 楼』:  

刚发现我们在dir /s/b/a-d c:\%pth%这里全都也忘记加引号了……
dir /s/b/a-d "c:\%pth%"



正在潜水修练的批处理小白
2007-6-27 01:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 13 楼』:  

9楼那段代码也是不需要临时文件的,而且对于这段代码临时文件是没有必要的,因为临时文件里面的所有文件都是同名的,复制到同一个文件夹里面后只会存在最后复制的一个,另外顶楼生成临时文件的那行代码没有必要用for命令;
如果想要使用临时文件的话,看下面的代码:
@echo off
cls
echo.
echo.
echo 请输入要搜索的文件名:
set /p pth=
del /f/q d:\temp.txt 1>nul 2>nul
dir /s/b/a-d "c:\%pth%">>d:\temp.txt
echo 请输入你要保存的文件夹位置:
set /p u_path=

for /f "delims=" %%i in (d:\temp.txt) do (
   echo %%~nxi
   copy "%%i" "%u_path%\"
)
del /f/q d:\temp.txt 1>nul 2>nul
exit




正在潜水修练的批处理小白
2007-6-27 02:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hanswanky
新手上路





积分 18
发帖 8
注册 2007-6-26
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by dikex at 2007-6-27 02:05 AM:
9楼那段代码也是不需要临时文件的,而且对于这段代码临时文件是没有必要的,因为临时文件里面的所有文件都是同名的,复制到同一个文件夹里面后 ...

第一个del /f/q d:\temp.txt 1>nul 2>nul不错     这点我都没想的    多谢指教  受教了


楼上的各位朋友  谢谢了  :lol::lol:本来昨晚就该 说的了    可是不知那该死的那网线给我夹断了

2007-6-27 12:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: