中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 21:00
16 发表于 2006-04-01 08:11 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
呵呵 我不行了 困了 觉会去
周一继续讨教哦~~~ 谢谢楼上热心的大哥们 ~~!


拜一个~~~ 睡觉去了~~ 888
17 发表于 2006-04-03 11:02 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
我用
for /f .....('date/t').... 是用来容错的
因为2000和xp不太一样的
18 发表于 2006-04-03 18:13 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
出了新问题了

刚才测试的时候发现了一个小问题
 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 ]
19 发表于 2006-04-04 18:08 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
检查一下你的a.txt后面是否有多余的回车?
也就是说要保证a.txt里面11是最后一行。
很明显,问题出在 copy %filename%.pdf .\need\%filename%.pdf 这一行上。
具体原因自己好好分析分析吧。
如果不是这个原因请再回贴说明,第一想到的就是这个原因了。
20 发表于 2006-04-05 10:27 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
请指点 我从早上想到现在了
21 发表于 2006-04-05 10:42 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
是不是因为11后面有回车?
22 发表于 2006-04-05 13:10 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
没有啊

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

这句我想了很久 也没想明白哪里有问题
23 发表于 2006-04-05 13:26 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
那你把pause语句改为exit看看。
24 发表于 2006-04-05 14:24 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
就是因为exit不对 我才改成pause来观察它的每句的执行结果的
25 发表于 2006-04-05 14:43 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
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%就可以了。自己调试要比靠别人学得快。
26 发表于 2006-04-06 13:33 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
调试完了 现在可以了 我跟踪完后发现是pause语句惹的祸
而以前我添加pause的时候是因为改了后面的一些命令

呵呵 耽误你的时间了 sorry

另外有个问题想问


if exist %1\. goto a

这个语句我本意是用来判断%1这个路径是不是文件夹的,但是始终不成功
提示说运算符怎么怎么的
27 发表于 2006-04-06 18:56 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
害人啊,早知道让你自己去调试就完了。
所以对于你下面这个问题也决定让你自己去调试。

@echo on
echo %1
if exist %1\. echo 存在!
pause>nul

特别注意一下路径里面有空格的情况。
28 发表于 2006-04-06 19:23 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
呵呵 那路径中有空格怎么办啊?
if exist "C:\Documents and Settings\new\桌面\新建文件夹"\.
29 发表于 2006-04-06 19:29 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
加引号。
我这边是可以执行成功的。
不过我一般都不用if,我喜欢用其他的命令来完成然后根据errorlevel来判断。
比如你说的这种情况我记得上次有这么一个贴,我的代码好象是:
dir "C:\Documents and Settings\new\桌面\新建文件夹"\. >nul 2>nul && echo ....
或者不用&&和||,在下一句用%errorlevle%以及if errorlevel来判断。
始终觉得if除了defined比较可靠以外其他的都容易惹麻烦。
论坛跳转: