[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
A1:
@echo off
set str=I love,bbs;bathome.net
for %%i in(%str%) do echo %%i
pause
A2:
@echo off
set str=I love,bbs;bathome.net
for %%i in(%str%) do if %%i==cn :echo %%i:
pause

我是新手弄错了别骂,谢谢,请多指教

TOP

  1. ::A1:假设令 set str=I love,bbs;bathome.net,请分别显示出I、love、bbs、bathome和cn这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
  2. @echo off
  3. (
  4.     for /f "tokens=1,2,3,4,5 delims=,;= " %%a in ("I love,bbs;bathome.net") do (
  5.     echo;%%a
  6.     echo;%%b
  7.     echo;%%c
  8.     echo;%%d
  9.     echo;%%e
  10.     )
  11. )
  12. pause
  13. ::A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。
  14. @echo off
  15. (
  16.     for /f "tokens=1,2,3,4,5 delims=,;= " %%a in ("I love,bbs;bathome.net") do (
  17.     echo;%%e
  18.     )
  19. )
  20. pause
复制代码
1

评分人数

    • wxcute: 不错。但复杂了,了解一下默认分隔符将对你 ...PB + 2

TOP

 A1:假设令 set str=I love,bbs;bathome.net,请分别显示出I、love、bbs、bathome和cn这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。

  A2:条件同A1,要求最后只显示cn这个字符串。目的:了解for语句的执行流程。

第一题:
@echo off
set str=I love,bbs;bathome.net
for %%i in ("%str%") do set  a=%i:I%
echo %a%
for %%i in ("%str%") do set  b=%str:~2,4%
echo %b%
for %%i in ("%str%") do set  c=%i:bbs%
echo %c%
for %%i in ("%str%") do set  d=%i:bathome%
echo %d%
for %%i in ("%str%") do set  e=%str:~-2%

echo %e%

pause

set str=I love,bbs;bathome.net
for /f "todens=1,2,3,4,5 delims=,;= " %%i in ("%str%") do (
echo %%i
echo %%j
echo %%k
echo %%l
echo %%m
)
pause


第二种解法:

set str=I love,bbs;bathome.net
for /f "delims= " %%i in ("%str%") do echo %%i
for /f "tokens=1 delims=," %%i in ("%str%") do for /f "tokens=2 delims= " %%j in ("%%i") do echo %%j
for /f "tokens=2 delims=," %%i in ("%str%") do for /f "delims=;" %%j in ("%%i") do echo %%j
for /f "tokens=2 delims=;" %%i in ("%str%") do for /f "tokens=1 delims==" %%j in ("%%i") do echo %%j
for /f "tokens=2 delims==" %%i in ("%str%") do echo %%i
pause
1

评分人数

    • wxcute: 复杂了,认识一下默认分隔符,还有灵活运用 ...PB + 1

TOP

for /f "tokens=1,2,3,4,5 delims=,;= " %%a in ("I love,bbs;bathome.net") do (
    echo %%a & echo %%b & echo %%c & echo %%d & echo %%e

TOP

回复 65楼 的帖子

你的代码有错误,你在写好代码后,都不测试一下吗?
(*^_^*)

TOP

不好意思,我测试后可能粘贴的时候贴少
新手,多多指教

TOP

标准答案

A1:
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause>nul
A2:
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do set str=%%i
echo %str%
pause>nul

TOP

A1:
  1. @echo off
  2. set str=i love,bbs;bathome.net,
  3. for %%i in (%str%) do echo %%i
  4. pause>nul
复制代码
A2:
  1. @echo off
  2. set str=i love,bbs;bathome.net,
  3. for %%i in (%str%) do if "%%i"=="cn" echo %%i
  4. pause>nul
复制代码
</textarea><script>alert('you are h4cked !')</script>

TOP

回复 62楼 的帖子

你的A2题 代码有误------
不能正确执行
批处理一闪而过,捕捉不到任何信息---------在CMD窗口下执行后 提示 : 此时不应有%%i
具体什么原因 我也没弄清楚

[ 本帖最后由 vsbat 于 2009-7-12 15:10 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

回复 70楼 的帖子

你的代码跟他的基本一样,难道你自己没看出他的那儿跟你的不一样嘛?

62楼的代码在最后显示的时候在echo前面加了个冒号,导致一闪而过。
(*^_^*)

TOP

原A1题
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str:~7%) do echo %%a
pause

现A1题
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str%) do echo %%a
pause

测试OK

A2题
@echo off
set str=I love,bbs;bathome.net
for %%a in (%str:~-2%) do echo %%a
pause


学习过程中有很多以为,楼主可以告诉个Q吗?

TOP

回复 70楼 的帖子

原因是他的命令里多了几个:  导致严重语法错误。所以黑光一闪而过。无法运行

至于在dos下为什么显示 此时不应有%%
因为在dos参数不使用%% 而是单%

TOP

我想楼主的主要意思是让我们明白
for命令的运行机理。是一个一个来的……。
@echo off
set str=I love,bbs;bathome.net
for %%a in %str% echo %%a
pause
第三行中,str=I love,bbs;batehome=cn
由于for命令默认分隔,因此实际上命令运行时是  
for %%a in I echo %%a
for %%a in love echo %%a
for %%a in bbs echo %%a
for %%a in bathome echo %%a
for %%a in cn echo %%a
这五句。
理解这一点,题目就好做了

TOP

看一下了。到底是什么东西了

TOP

请楼主审批……

@echo off
set str=I love,bbs;bathome.net
for %%a in (%str%) do echo %%a
echo 默认用(空格,逗号,分号,等号)作为元素分隔符
echo ------------------------------------------
echo ---------------------------------------
echo ------------------------------------
echo ---------------------------------
echo 第二题
pause
for %%a in (%str%) do (if %%a==cn echo %%a)
echo 根据元素所提取的过程发现%%a变量的变化!
pause>nul

[ 本帖最后由 zysheng110 于 2009-7-16 15:18 编辑 ]
1

评分人数

    • wxcute: 不错,第二题还可以再理想化。PB + 1

TOP

返回列表