中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 判断奇偶数 上一主题 | 下一主题
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 16 楼』:  

呵呵  我不行了  困了   觉会去  
周一继续讨教哦~~~  谢谢楼上热心的大哥们 ~~!


拜一个~~~  睡觉去了~~ 888

2006-4-1 08:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 17 楼』:  

我用
for /f .....('date/t').... 是用来容错的
因为2000和xp不太一样的

2006-4-3 11:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 18 楼』:  

出了新问题了

刚才测试的时候发现了一个小问题
For /f "tokens=*" %%a in (a.txt) do call :number %%a
pause

:number
set /a flag = %1 %% 2
goto %flag%

:1
set /a filename = %1 + 1
goto copy

:0
set /a filename = %1 - 1

:copy
copy %1.pdf .\need\%1.pdf && copy %filename%.pdf .\need\%filename%.pdf
goto :eof

For /f "tokens=*" %%a in (a.txt) do call :number %%a
pause

:number
set /a flag = %1 %% 2
goto %flag%

:1
set /a filename = %1 + 1
goto copy

:0
set /a filename = %1 - 1

:copy
copy %1.pdf .\need\%1.pdf
copy %filename%.pdf .\need\%filename%.pdf
goto :eof
这两个执行结果不一样

情况是这样的

a.txt里边有5 9 11
用第一段代码执行出来的是5.pdf 和6.pdf
而用第二段代码执行出来的是1.pdf  5.pdf 6.pdf
批处理所在的文件夹下有
12o.pdf
11o.pdf
7.pdf
8o.pdf
6.pdf
10o.pdf
2.pdf
3.pdf
4.pdf
1.pdf
5.pdf
9o.pdf
13.pdf

[ Last edited by kcdsw on 2006-4-3 at 18:18 ]

2006-4-3 18:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 19 楼』:  

检查一下你的a.txt后面是否有多余的回车?
也就是说要保证a.txt里面11是最后一行。
很明显,问题出在 copy %filename%.pdf .\need\%filename%.pdf 这一行上。
具体原因自己好好分析分析吧。
如果不是这个原因请再回贴说明,第一想到的就是这个原因了。

2006-4-4 18:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 20 楼』:  

请指点  我从早上想到现在了

2006-4-5 10:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 21 楼』:  

是不是因为11后面有回车?

2006-4-5 10:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 22 楼』:  

没有啊  

copy %filename%.pdf .\need\%filename%.pdf

这句我想了很久 也没想明白哪里有问题

2006-4-5 13:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 23 楼』:  

那你把pause语句改为exit看看。

2006-4-5 13:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 24 楼』:  

就是因为exit不对 我才改成pause来观察它的每句的执行结果的

2006-4-5 14:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 25 楼』:  

copy %1.pdf .\need\%1.pdf && copy %filename%.pdf .\need\%filename%.pdf
表示前一句执行成功才执行后一句,而
copy %1.pdf .\need\%1.pdf
copy %filename%.pdf .\need\%filename%.pdf
不管前面一句是否成功都会执行后面一句
既然排除了你的a.txt后面没有回车问题就在这里了。
建议你在调试的时候把开头的 @echo off取消,这样可以看到结果,然后在pause后面加上一句exit,避免最后还执行一次。
另外你也可以在里面加些断点,只要在你想中断的地方加上pause.nul和echo %filename%就可以了。自己调试要比靠别人学得快。

2006-4-5 14:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 26 楼』:  

调试完了  现在可以了  我跟踪完后发现是pause语句惹的祸
而以前我添加pause的时候是因为改了后面的一些命令

呵呵  耽误你的时间了  sorry

另外有个问题想问


if  exist %1\. goto a

这个语句我本意是用来判断%1这个路径是不是文件夹的,但是始终不成功
提示说运算符怎么怎么的

2006-4-6 13:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 27 楼』:  

害人啊,早知道让你自己去调试就完了。
所以对于你下面这个问题也决定让你自己去调试。
@echo on
echo %1
if exist %1\. echo 存在!
pause>nul
特别注意一下路径里面有空格的情况。

2006-4-6 18:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 28 楼』:  

呵呵  那路径中有空格怎么办啊?
if exist "C:\Documents and Settings\new\桌面\新建文件夹"\.

2006-4-6 19:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 29 楼』:  

加引号。
我这边是可以执行成功的。
不过我一般都不用if,我喜欢用其他的命令来完成然后根据errorlevel来判断。
比如你说的这种情况我记得上次有这么一个贴,我的代码好象是:
dir "C:\Documents and Settings\new\桌面\新建文件夹"\. >nul 2>nul && echo ....
或者不用&&和||,在下一句用%errorlevle%以及if errorlevel来判断。
始终觉得if除了defined比较可靠以外其他的都容易惹麻烦。

2006-4-6 19:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: