中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 11:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 问个删除文件的批处理 查看 2,837 回复 27
16 发表于 2006-11-07 03:36 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
你要的延时变量所达到的效果:

第二种方法:


@echo %dbg% off
setlocal enabledelayedexpansion

set b=0
for /l %%i in (0,1,4) do (
echo !b!
call set /a b+=1
)


输出如下:

C:\TEMP\k>b.bat
0
1
2
3
4
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
17 发表于 2006-11-07 03:44 ·  中国 内蒙古 呼和浩特 电信
初级用户
积分 50
发帖 23
注册 2006-11-03 23:05
19年会员
UID 69459
性别 男
状态 离线
楼上的兄弟,你完全是在偷巧阿
这样,我要求
@echo %dbg% off

for /L %%i in (0,1,4) do (
echo %%i
)
echo %%i 中不能用%%i来显示,要用另外一个变量显示,该变量和%%i一点关系都不能有
18 发表于 2006-11-07 03:47 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
onlykier兄,看了你8楼的代码例子,并运行了很多次并调试……
不过,你上面要处理的问题并没有跟上你的思路:)

你想了如何去解决一个问题,可是偏偏出现错误的地方几乎全都是因为一些基础的知识点所影响着:)
而onlykier兄的学习速度太快了,但最后还要回到那些基础的变量赋值、SET、延时变量、For的结构、特殊符号的运行和转义……

所以,建议onlykier把下面链接中所提到的知识点重新、从头到尾的一行一行代码全都键入一遍~:)
然后回过头来再看,相信onlykier兄会超越现在……
而这一切过程很可能仅仅几天甚至一、两天就够了,
可是这一两天的从头到尾做一遍这些知识点,相信onlykier永远都不再会问题了,
而是开始走入了知道如何处理一些不知道的问题并可以极快的找到办法:)


[简单索引]关于SET变量、延时变量、各种符号的用法……
http://www.cn-dos.net/forum/viewthread.php?tid=24549&fpage=1

[ Last edited by redtek on 2006-11-7 at 03:57 AM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
19 发表于 2006-11-07 04:02 ·  中国 内蒙古 呼和浩特 电信
初级用户
积分 50
发帖 23
注册 2006-11-03 23:05
19年会员
UID 69459
性别 男
状态 离线
楼上的兄弟,你杀了我吧
我再来个例子
我只想显示第一行,下面的代码确都显示,why?
@echo off
dir d: /b>>d:\1.txt
set c=0
echo 1,%c%
for /f %%i in (d:\1.txt) do (
if %c% equ 0 (set c=1
echo 2,%c%
echo %%i)
)

[ Last edited by onlykier on 2006-11-6 at 03:12 PM ]
20 发表于 2006-11-07 04:10 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
楼上的兄弟,我不杀你,还是你让我自杀吧~:)

你的 for (你这里不加 /f 参数能读出文件内容来吗?) %%i in (d:\1.txt) do (
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
21 发表于 2006-11-07 04:12 ·  中国 内蒙古 呼和浩特 电信
初级用户
积分 50
发帖 23
注册 2006-11-03 23:05
19年会员
UID 69459
性别 男
状态 离线
我修改了,楼上的兄弟,你qq多少,我等答案等的的心痛啊
22 发表于 2006-11-07 04:14 ·  中国 内蒙古 呼和浩特 电信
初级用户
积分 50
发帖 23
注册 2006-11-03 23:05
19年会员
UID 69459
性别 男
状态 离线
set c=1
echo 2,%c%
为什么输出的 %c%还是0阿??
23 发表于 2006-11-07 04:28 ·  中国 内蒙古 呼和浩特 电信
初级用户
积分 50
发帖 23
注册 2006-11-03 23:05
19年会员
UID 69459
性别 男
状态 离线
论坛翻页,没看到redtek 的第二种方法 ^^!
set b=0
for /l %%i in (0,1,4) do (
echo !b!
call set /a b+=1
再请教下,这里问什么要有call呢?
24 发表于 2006-11-07 04:30 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线

@echo %dbg% off
:: 延时变量
setlocal enabledelayedexpansion

dir d: /b>>d:\1.txt
set c=0
echo 1,%c%

:: /f 参数
:: "delims=" 可以读取含空格的字符串……
for /f "delims=" %%i in (d:\1.txt) do (

if !c! equ 0 (
set c=1
echo 2,!c!
echo %%i
)
)

建议这样按缩进书写代码:)



[ Last edited by redtek on 2006-11-7 at 04:36 AM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
25 发表于 2006-11-07 04:30 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线


@echo off
dir c:\ /b>>c:\1.txt
set /p s=<c:\1.txt
echo %s%
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-11-07 04:33
26 发表于 2006-11-07 04:31 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
Originally posted by onlykier at 2006-11-7 04:28:
论坛翻页,没看到redtek 的第二种方法 ^^!
set b=0
for /l %%i in (0,1,4) do (
echo !b!
call set /a b+=1
再请教下,这里问什么要有call呢?


那个 call 删了吧,那是做别的实验留下的COPY上来时忘了删了~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
27 发表于 2006-11-07 04:32 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
lxmxn兄代码非常简捷,欣赏~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
28 发表于 2006-11-07 04:48 ·  中国 内蒙古 呼和浩特 电信
初级用户
积分 50
发帖 23
注册 2006-11-03 23:05
19年会员
UID 69459
性别 男
状态 离线
@echo off
dir c:\ /b>>c:\1.txt
set /p s=<c:\1.txt
echo %s%
pause
这段代码为什么只显示第一行?
我觉的应该显示好多阿,因为c:\1.txt内容给了s了阿
论坛跳转: