Board logo

标题: [文件操作] 批处理对for语句的%%i/%%a直接进行字符串截取为何不能实现 [打印本页]

作者: adam_chenzh    时间: 2009-10-2 19:25     标题: 批处理对for语句的%%i/%%a直接进行字符串截取为何不能实现

本帖最后由 pcl_test 于 2016-9-3 15:01 编辑

看了此强帖:http://www.bathome.net/viewthread.php?tid=40&highlight=%D7%D6%B7%FB%BD%D8%C8%A1
做以下练习
  1. @echo off
  2. for /f %%i in (ip) do (
  3. echo %%i:~0,10%%
  4. )
  5. pause
复制代码
文件ip内容为
  1. ABCDEFG1192.168.10.1
  2. ABCDEFG2192.168.10.2
  3. ABCDEFG3192.168.10.3
复制代码
执行结果如下:
  1. ABCDEFG1192.168.10.1:~0,10%
  2. ABCDEFG2192.168.10.2:~0,10%
  3. ABCDEFG3192.168.10.3:~0,10%
  4. 请按任意键继续. . .
复制代码
我哪里错了?请指教
作者: bhsx    时间: 2009-10-2 20:02

只能用在SET定义出来的变量..

[ 本帖最后由 bhsx 于 2009-10-2 20:18 编辑 ]
作者: canyuexiaolang    时间: 2009-10-2 20:23

文件IP是那么写进去的吗?
应该是、、忘了、、、、、
作者: adam_chenzh    时间: 2009-10-2 20:40

  1. @echo off
  2. for /f %%i in (ip) do (
  3. call set s=%%i%%
  4. call set b=%%s:~0,8%%
  5. call echo %%b%%
  6. )
  7. pause
复制代码

作者: Seter    时间: 2009-10-2 21:05

  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. for /f %%i in (ip) do (
  3. set i=%%i
  4. echo !i:~0,10!
  5. )
  6. pause
复制代码
TRY,没试过
作者: adam_chenzh    时间: 2009-10-4 00:57

原帖由 Seter 于 2009-10-2 21:05 发表
@echo off&setlocal ENABLEDELAYEDEXPANSION
for /f %%i in (ip) do (
set i=%%i
echo !i:~0,10!
)
pauseTRY,没试过

测试过  可以的
请问“!...!”这个如何理解
作者: Seter    时间: 2009-10-4 07:31

去论坛搜索一下叭...这个我解释不清楚...
关于setlocal:   http://bbs.bathome.net/viewthread.php?tid=2051&highlight=setlocal
我感觉!也可以当作普通的%来使用...不过这种情况多用在嵌套里...

[ 本帖最后由 Seter 于 2009-10-4 07:35 编辑 ]




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2