[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理中if后echo变量出现空格

标题已尽量浓缩和清楚了,希望能合版规,

这是我翻电脑发现的,是Written by Hitme的代码,(net命令htm构造.bat)运行后发现其中的链接不起作用,
以下代码我在单位电脑上能正常运行,家中居然不行,所以提出问题后,不能立即测试。
  1. @echo off
  2. del net_help.htm 2>nul
  3. echo.
  4. echo......请稍候,构造htm文件中.....
  5. echo.>tmp.txt
  6. setlocal ENABLEDELAYEDEXPANSION
  7. for /f "tokens=1,2 delims=:" %%i in ('net help^|more +9^|findstr /n "."') do (
  8. set n=%%j
  9. if %%i gtr 0 (if %%i lss 10 (
  10. echo !n:~3,22!>>tmp.txt
  11. echo !n:~28,14!>>tmp.txt
  12. echo !n:~50,14!>>tmp.txt
  13. )
  14. )
  15. )
  16. for /f "tokens=1,2,3 delims= " %%i in ('sort tmp.txt') do (
  17. set x=%%i
  18. set y=%%j
  19. set z=%%k
  20. if exist !z! (>>tmp1.txt echo %%i %%y) else (>>tmp1.txt echo %%I %%y %%z)
  21. )
  22. endlocal
  23. >net_help.htm echo ^<head^>
  24. >>net_help.htm echo ^<title^>Help for Net commands^</title^>
  25. >>net_help.htm echo ^<meta http-equiv="Content-Type" content="text/html^; charset=gb2312" ^/^>
  26. >>net_help.htm echo ^</head^>
  27. >>net_help.htm echo ^<A NAME="Top"^>
  28. >>net_help.htm echo ^<center^>
  29. >>net_help.htm echo ^<h1^>Net 命令速查手册^</h1^>
  30. >>net_help.htm echo Written by Hitme
  31. >>net_help.htm echo ^</center^>
  32. for /f "delims=" %%i in (tmp1.txt) do (
  33. echo ^<a href="#%%i"^>%%i^</a^>^</br^>>>net_help.htm
  34. )
  35. for /f "delims=" %%i in (tmp1.txt) do (
  36. >>net_help.htm echo ^<a name="%%i"^>
  37. >>net_help.htm echo ^<h2^>%%i^</h2^>
  38. >>net_help.htm echo ^<pre^> %%i /help|more /s>>net_help.htm
  39. >>net_help.htm echo ^</pre^>
  40. >>net_help.htm echo ^<a href="#top"^>返回页首^</a^>
  41. )
  42. start net_help.htm
  43. del tmp*.txt
  44. pause
复制代码
情况是<a name="%%i">和]<a href="#%%i">%%i</a^>的%%i后面会多出数个空格,导致链接失效,手动去掉链接就好了,因此我把其中的部分代码修改了一下,想标红但没能成功(导致一楼跟帖),但发现在if exist !z! (echo !x! !y!>>tmp1.txt) else (echo !x! !y! !z!>>tmp1.txt)中,前面括号里的依然会带空格,后面括号里的就不带空格,单独echo 变量是没有空格的,搞了一个下午,不知所以,特询问大家高人,


原因何在,如何处理。
(不会发贴)因为是涉及网页的bat,语句不可避免htm语句,在网页上显示可能有兼容问题,请阅读者能见谅。


[ 本帖最后由 hlzj88 于 2009-10-13 22:38 编辑 ]
目的,学习批处理

我修改的部分颜色没有加上,特复制如下。
      for /f "tokens=1,2,3 delims= " %%i in ('sort tmp.txt') do (
      set x=%%i
      set y=%%j
      set z=%%k
   if exist !z! (echo !x! !y!>>tmp1.txt) else (echo !x! !y! !z!>>tmp1.txt)

[ 本帖最后由 hlzj88 于 2009-10-13 21:19 编辑 ]
目的,学习批处理

TOP

对于标题中出现“关于××”、“××的问题”句式的,一律以标题违规论处;

能否说说你是如何理解版规中的这句话的?或者你认为这句话存在歧义,以至于你无法理解它的意思?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我想问下你用那么多^干什么....
还有...复制上来的时候请去除"自动换行",谢谢...

究竟要实现什么功能?实在没精力读这样的代码
你的代码是一模一样复制上来的么?我这里运行好后不但没删除tmp.txt和tmp1.txt,htm稳健中也只有%1 )四个字符
另,为什么用net help而不是net /?后使用[空格][竖][空格]即" | "作为分隔符?

[ 本帖最后由 Seter 于 2009-10-13 21:51 编辑 ]

TOP

两个地方...
  1. if exist !z! (>>tmp1.txt echo %%i %%y) else (>>tmp1.txt echo %%I %%y %%z)
  2. if "!z!"=="" (echo !x! !y!>>tmp1.txt) else (echo !x! !y! !z!>>tmp1.txt)
复制代码
  1. >>net_help.htm echo ^<pre^> %%i /help|more /s>>net_help.htm
  2. >>net_help.htm echo ^<pre^> &%%i /help|more /s>>net_help.htm
复制代码
1

评分人数

TOP

谢谢bhsx,需要到单位进行测试
目的,学习批处理

TOP

谢谢bhsx,测试通过
目的,学习批处理

TOP

返回列表