![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 05:59 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]IF、ELSE |
| 可打印版本 3,018 / 10 |
| 第1楼 uemuem | 发表于 2006-10-14 00:53 |
| 初级用户 发帖 68 积分 153 来自 上海 | |
|
[已结]IF、ELSE 我是新进门的,关照一下,呵呵,正在摸索中。。。
@echo off fc 1.txt 2.txt>3.txt setlocal enabledelayedexpansion for /f %%a in (3.txt) do set file1=%%a !file1! if %file%=="" ( goto end ) else ( copy test.xls e:\备份.xls ) :end [ Last edited by uemuem on 2006-10-14 at 01:17 ] |
|
| 第2楼 vkill | 发表于 2006-10-14 01:02 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
for /f "tokens=*" %%a in (3.txt) do copy %%a e:\备份.xls
这样就可以了,搞那么复杂? |
|
| 第3楼 ARCF | 发表于 2006-10-14 01:05 |
| 初级用户 发帖 14 积分 32 | |
|
批处理有if else吗?我瞅着这条像是PASAL的语言啊
|
|
| 第4楼 namejm | 发表于 2006-10-14 01:14 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
if %file%=="" 属于语法格式错误,正确的应该是 if "%file%"=="" ,请注意加引号。
|
|
| 第5楼 uemuem | 发表于 2006-10-14 01:22 |
| 初级用户 发帖 68 积分 153 来自 上海 | |
|
辛苦了辛苦了
|
|
| 第6楼 weilong888 | 发表于 2006-10-14 01:47 |
| 银牌会员 发帖 548 积分 1,270 | |
|
if命令掌握正确了,可大有用处。
|
|
| 第7楼 uemuem | 发表于 2006-10-14 01:48 |
| 初级用户 发帖 68 积分 153 来自 上海 | |
|
其实我还是没太明白,能说详细点吗?
我这样还是提示语法错误: @echo off setlocal enabledelayedexpansion for /f %%a in (1.txt) do set file1=%%a !file1! for /f %%a in (2.txt) do set file2=%%a !file2! if "%file1%"=="%file2%"( goto end )else( copy test.xls e:\备份.xls ) :end |
|
| 第8楼 namejm | 发表于 2006-10-14 06:14 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
如果还提示语法错误的话,估计有两个地方会出问题:
1、else部分格式不对,正确的格式应该是 if 条件 (command1) else (command2),你在顶楼的 else 与 if 不在同一行上;第7楼的又把括号和 else 连在一起了;if "%file1%"=="%file2%"( 也存在括号与语句连写的问题; 2、if "%file1%"=="%file2%" 这一句也可能有问题。因为你的%file1% 和 %file2% 提取的都是文件里的内容,如果文件内容中含有CMD下的敏感字符的话,这条语句就会发生错误。 |
|
| 第9楼 uemuem | 发表于 2006-10-16 22:07 |
| 初级用户 发帖 68 积分 153 来自 上海 | |
|
谢谢,学习了
|
|
| 第10楼 不得不爱 | 发表于 2006-10-16 22:29 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
Originally posted by namejm at 2006-10-14 01:14: if %file%=="" 不属于语法格式错误,如果变量file的值就是""的话条件就成立。 错误的是(没有加在if %file%==""的后面。 另外7楼少打了几个空格 @echo off setlocal enabledelayedexpansion for /f %%a in (1.txt) do set file1=%%a !file1! for /f %%a in (2.txt) do set file2=%%a !file2! if "%file1%"=="%file2%" ( goto end ) else ( copy test.xls e:\备份.xls ) :end [ Last edited by qwe1234567 on 2006-10-16 at 22:37 ] |
|
| 第11楼 lxmxn | 发表于 2006-10-17 04:48 |
| 版主 发帖 4,938 积分 11,386 | |
|
楼上版主所言极是。 空格是命令与命令,命令与各种符号以及命令和参数之间有效的默认分隔符,如果把空格省略了,cmd.exe就会以为写在一起的是一条语句或者命令,这样cmd.exe就解释不了,也就执行不了,因而会报错,所以在写批处理或者在命令行下写命令的时候,一定要注意书写的规范。特别是新手朋友(当然我也是啦~: ) )要注意这点。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |