中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-25 23:45
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行
DOS批处理 & 脚本技术(批处理室) » 判断奇偶数
可打印版本  5,446 / 28
第1楼 kcdsw 发表于 2006-03-31 11:56
中级用户 发帖 179 积分 404
判断奇偶数
呵呵 工作需要哇

我想用一个批处理来判断一个数值是奇数偶数.
这个数值是用
for /f 从一个txt文件中提取的,我的目标是如果是偶数,那么把这个数值减1,如果是奇数,把这个数值加1.
第2楼 chenall 发表于 2006-03-31 12:15
银牌会员 发帖 469 积分 1,276 来自 福建泉州
set /a _tmp1=数值/2
set /a _tmp2=2*_tmp1
if %_tmp2% equ 数值 (set /a 数值-=1) else (set /a 数值+=1)
第3楼 3742668 发表于 2006-03-31 12:24
荣誉版主 发帖 718 积分 2,013
也来一个

拷贝到你的批处理中,调用格式为:
call :number %数值%
echo %ret%
第4楼 chenall 发表于 2006-03-31 12:46
银牌会员 发帖 469 积分 1,276 来自 福建泉州
3楼的方法不错.
用%(取余)运算符.
第5楼 3742668 发表于 2006-03-31 18:01
荣誉版主 发帖 718 积分 2,013
过奖了,效率还过得去吧。不过对于大于32位的数字无效,所以写了个加强版,没加纠错。
第6楼 kcdsw 发表于 2006-03-31 18:21
中级用户 发帖 179 积分 404
for /f "tokens=*" %%a in (a.txt) do ( //从a.txt中提取需要复制的文档
call :number %%a //执行number的奇偶判断
copy %%a.pdf f:\new
copy %a%.pdf f:\new
)
:number
set num=
set /a num = %1 %% 2 //这里我不太明白
goto %num%

:1
set /a ret = %1 + 1
goto :eof

:0
set /a ret = %1 - 1
goto :eof

能帮我看看吗?
我需要把个别的文件挑出来复制出去,并要保证原文件夹里没有冗余
我把需要的数据放在a.txt中,用for语句提取

我的系统环境是xp sp2
大家帮我看看吧 小弟在此谢谢大家了
我很喜欢bat的 只是学的太不精了
第7楼 kcdsw 发表于 2006-03-31 18:27
中级用户 发帖 179 积分 404
需要补充的就是如果这个文件是偶数文件,那就把它和比它小一数的文件拷过去
如果文件是奇数,那么把它本身和它大1的的文件也复制过去
第8楼 kcdsw 发表于 2006-03-31 18:47
中级用户 发帖 179 积分 404
我刚才测试 不管怎么测试 %%a取的数据不能被传递到number中





[ Last edited by kcdsw on 2006-3-31 at 19:16 ]
第9楼 3742668 发表于 2006-03-31 19:17
荣誉版主 发帖 718 积分 2,013
set /a num = %1 %% 2 这句是求余数。
%%a的数据是不会变的,要获得运算后的数字需要用%ret%。。。
根据你的要求更改如下:

你看看能不能执行。。记得拷贝到a.txt所在的目录下。。

[ Last edited by 3742668 on 2006-3-31 at 19:25 ]
第10楼 kcdsw 发表于 2006-03-31 19:21
中级用户 发帖 179 积分 404
呵呵 用你的可以执行
不过你这个文件里有个笔误 呵呵

flag的名称错了哦
应该是0和1
第11楼 3742668 发表于 2006-03-31 19:27
荣誉版主 发帖 718 积分 2,013
唉,要好好学学willsort的态度了。
已更正。。
第12楼 kcdsw 发表于 2006-03-31 19:30
中级用户 发帖 179 积分 404
呵呵 说真的 小弟真想拜倒了 强悍哇~~~
另外能帮我简化或者指正一下另外一个文件吗?





目的:
我在桌面上建立一个指向此bat的一个快捷方式

1.不论什么时候执行,首先检测当日的文件夹是否建立
2.如果建立,检测是否有需要移动的文件,如果没有则用浏览器打开这个目录(即双击就能打开当天文件夹,以便查看有什么文件),如果有,则将该文件移动到当天的文件夹里.(我把此快捷方式放到了系统的send to文件夹中,遇到想移动的文件,直接用右键发送到)

[ Last edited by kcdsw on 2006-3-31 at 19:35 ]
第13楼 3742668 发表于 2006-03-31 20:21
荣誉版主 发帖 718 积分 2,013
sorry,现在有事,提供思路:
1.获得当前日期可以用%date:~0,10%来得到,所以你的第二,三句可以合并为一句。
2.用xcopy拷贝文件不管目录是否存在都可以创建。用move移动文件就可以省略掉del命令了。
3.个人认为把这个批处理拷贝到“发送到”一次只能处理一个文件,可以考虑修改注册表。例如我以前写过一个批处理用来查看当前文件被哪个程序使用而导致无法删除,我的注册表脚本(reg文件)为:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\谁在使用它?]

[HKEY_CLASSES_ROOT\*\shell\谁在使用它?\command]
@="c:\\cxs.bat %1"

注意路径中的 \
你先自己修改了看看吧,然后把你修改过的贴上来让大家帮你再参考参考。
第14楼 kcdsw 发表于 2006-04-01 07:35
中级用户 发帖 179 积分 404
可以处理多个文加啊
move的时候出过错,后来没细想 直接换成copy+del了
xcopy


这样的话如果是把一个文件夹交给它的话
结果文件夹本身没有复制过去,复制过去的只有它里面的文件和文件夹
怎么才能把这个原文件夹也弄过去?
或者最简单的用来分辨这个%1是文件还是文件夹?

[ Last edited by kcdsw on 2006-4-1 at 08:05 ]
第15楼 3742668 发表于 2006-04-01 07:43
荣誉版主 发帖 718 积分 2,013
早睡早起身体好,试着简单改了一下:

如果没有要复制的文件则会打开当天的目录,如果当天的目录不存在则会提示目录不存在;如果有要复制的文件就会移动文件到当天的目录中,如果当天的目录不存在则会自动创建;如果你想实现没有要拷贝的文件且当天的目录不存在时候自动建立目录的话可以考虑在explorer后面接语句“|| md f:\print\%date:~0,10%”。
至于注册表脚本,虽然可以多选但是也有弊病,就是对文件路径中包含空格的情况需要自己在批处理中判定并处理。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023