Board logo

标题: [网络连接] 批处理怎么截取一行中的非空的字符? [打印本页]

作者: qq381234916    时间: 2009-12-17 17:39     标题: 批处理怎么截取一行中的非空的字符?

@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%i in ('net view') do (
     set ip=%%i
     if "!ip:~0,2!"=="\\" (
          set "ip=!ip:~0!"
rem 到这里已经得到了 同一局域网内的所有主机 格式为 \\servername
rem 接下来我要执行的操作
net use !ip!\ipc$ "" /user:student
rem 但是在这里就出错了希望高手补充
    )
)
pause

     
在每台主机的后面有N多空白字符,才能截取到非空白 字符\
但是不是存放到文本文件中后再截取,而是 在上面

[ 本帖最后由 qq381234916 于 2009-12-17 19:46 编辑 ]
作者: Batcher    时间: 2009-12-17 18:00

从你给出的数据来看,没有空白字符啊。能否以附件的形式上传部分数据?
作者: qq381234916    时间: 2009-12-17 18:37     标题: 回复 2楼 的帖子

附件已经上传!
我有一个局域网 想读取网内所有在线的主机
并一一执行 ipc$ 连接
作者: asnahu    时间: 2009-12-17 18:56

  1. @echo off
  2. for /f "delims=" %%i in (ip.txt) do (
  3. echo %%~ni
  4. )
  5. pause>nul
复制代码

作者: qq381234916    时间: 2009-12-17 19:05     标题: 回复 4楼 的帖子

%%~ni
是什么意思,可以解释下吗?
作者: Batcher    时间: 2009-12-17 19:29     标题: 回复 5楼 的帖子

for命令的帮助里面写的挺详细,你先自己看看?
作者: neorobin    时间: 2009-12-17 19:53     标题: 回复 5楼 的帖子

请用下面的代码建一个 bat 文件, 再把任何一个 文件名有空格(或所在路径有空格) 的文件拖到那个 bat 文件上, 相信显示的内容可以帮助你搞清楚 参数扩展 (也适用于 FOR 的参数)
  1. @echo off&cls
  2. echo {%%1}={%1}
  3. echo {%%~1}={%~1}
  4. echo {%%~f1}={%~f1}
  5. echo {%%~d1}={%~d1}
  6. echo {%%~p1}={%~p1}
  7. echo {%%~n1}={%~n1}
  8. echo {%%~x1}={%~x1}
  9. echo {%%~s1}={%~s1}
  10. echo {%%~nx1}={%~nx1}
  11. echo {%%~s1}={%~s1}
  12. echo {%%~dp1}={%~dp1}
  13. echo {%%~a1}={%~a1}
  14. echo {%%~z1}={%~z1}
  15. echo {%%~t1}={%~t1}
  16. pause
复制代码

作者: qq381234916    时间: 2009-12-17 19:59     标题: 回复 7楼 的帖子

谢谢指点,看懂了。
可以再帮我看看上面提到的问题吗?

[ 本帖最后由 qq381234916 于 2009-12-17 20:06 编辑 ]
作者: neorobin    时间: 2009-12-17 20:44     标题: 回复 8楼 的帖子

请使用以下子程序处理相关的变量
  1. :truncTailSpaces rem 去掉尾部若干半角空格 调用格式: call :truncTailSpaces 字符串变量名
  2. if "!%1:~-1!" equ " " (set %1=!%1:~0,-1!)&(call :truncTailSpaces %1)
  3. exit /b
复制代码
以下是测试代码和测试结果
  1. @echo off & setlocal enabledelayedexpansion & cls
  2. (set aa=sdfds     sdsdfs adfdsf    dsfdsafdaf                          )
  3. (echo !aa!}) & (call :truncTailSpaces aa) & (echo !aa!}) & pause & exit
  4. :truncTailSpaces rem 去掉尾部若干半角空格 调用格式: call :truncTailSpaces 字符串变量名
  5. if "!%1:~-1!" equ " " (set %1=!%1:~0,-1!)&(call :truncTailSpaces %1)
  6. exit /b
  7. 测试结果:
  8. sdfds     sdsdfs adfdsf    dsfdsafdaf                          }
  9. sdfds     sdsdfs adfdsf    dsfdsafdaf}
复制代码

[ 本帖最后由 neorobin 于 2009-12-17 20:53 编辑 ]
作者: Batcher    时间: 2009-12-17 20:57     标题: 回复 8楼 的帖子

下次有问题,建议在顶楼一次性描述清楚。
你这样改来改去,人家4楼浪费自己的时间帮你写的代码岂不是做了无用功?久而久之,热心都变凉了。
作者: qq381234916    时间: 2009-12-17 22:42     标题: 回复 10楼 的帖子

恩,好的!下次一定注意,之前没表述清楚。谢谢各位了




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