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

[文件操作] 【已解决】批处理中echo如何控制输出文本的格式

上次请高手编了一个批处理
  1. @echo off & setlocal enabledelayedexpansion
  2. set "table=abcdefghijklmnop"&set i=0
  3. echo ***********************
  4. for /r .\ %%a in (*.exe) do (
  5.         call set a=%%table:~!i!,1%%
  6.         set e!a!="%%a"
  7.         echo *   ^(!a!^)  %%~nxa  *
  8.         set /a i+=1
  9. )
  10. set eq=exit/b
  11. echo *   (q)  Exit         *
  12. echo ***********************
  13. set /p select=Plz choose:
  14. !e%select%!
  15. pause
复制代码
作用是遍历当前目录下的exe文件生成菜单以供调用
现在问题是这样的,生成的菜单:
  1. ***********************
  2. *   (a)  1.exe  *
  3. *   (b)  12.exe  *
  4. *   (c)  123.exe  *
  5. *   (d)  1234.exe  *
  6. *   (e)  12345.exe  *
  7. *   (q)  Exit         *
  8. ***********************
  9. Plz choose:
复制代码
但是我需要的是这样的效果:
  1. **********************
  2. *   (a)  1.exe       *
  3. *   (b)  12.exe      *
  4. *   (c)  123.exe     *
  5. *   (d)  1234.exe    *
  6. *   (e)  12345.exe   *
  7. *   (q)  Exit        *
  8. **********************
  9. Plz choose:
复制代码
问题在于文件名的长度不是一样的,
而且不能改名(改了名就不能运行)
请教知道的朋友要怎样解决?

[ 本帖最后由 sniperhgy 于 2009-1-25 18:23 编辑 ]

方法很不错,实用,已经采用

TOP

回复 19楼 的帖子

一些字符被省掉了

***********************
* (a) picasaweb-s *
* (b) Heaven7w.ex *
* (c) choice.exe  *
* (d) cmd.exe  *
* (e) mountvol.ex *
* (f) taskkill.ex *
* (g) tasklist.ex *
* (h) telnet.exe  *
* (i) Diyupreg.ex *

TOP

话说10L,我的代码没有问题捏。。。

TOP

每次都把变量k赋值为" !k!",这样赋值的内容是一个空格加上一次赋值完的内容,空格就越来越多,这样赋值30次,就等于在k前面加30个空格。。。

TOP

有请我们伟大的def大哥做解释! 我上网太久挨骂了

TOP

for /l %%a in (1,1,30) do (set k= !k!)
这个,知道是循环了30次,但是怎么就变成了每次加一个空格了呢?

TOP

re 13楼……  额 这个。。。。。。

re 14楼      楼主一定没有看完一本完整的教程
         看到我签名里的连接没有  下载那个精华帖 认真看。
         不出一个月,你就可以把我给菜了。

       这里还是啰嗦下吧: for循环30次 每一次都把变量
    k叠加多一个空格,到末了就30个咯

TOP

谢谢523066680,你写的教程真棒,确实是循序渐进适合我这样的新手看

不过,
for /l %%a in (1,1,30) do (set k= !k!)
其中 set k= !k!起了什么作用?


[ 本帖最后由 sniperhgy 于 2009-1-25 21:47 编辑 ]

TOP

这些。。。
set /? 里面都有写吧。。。
要是连系统的帮助都不看那干脆就别学P了。。。

TOP

我把u盘改造了 一键还原启动盘了 玩了很多dos下的小游戏 很爽
(不用启动windows  原来电脑可以这样玩(*^__^*)
最主要是我电脑没喇叭 但是那个超级玛丽可以发声的 神了,
slore说那个是蜂鸣器发的声)

Re 10 楼:
就是跟截取字符串有关,我再做一次演示哈 这次带说明
  1. @echo off
  2. ::建立8个空格
  3. set "a=        "
  4. ::随便弄两个比较短的字符串
  5. set xa=123
  6. set xb=12345
  7. ::给未知长度字符后面补8个空格
  8. set xa=%xa%%a%
  9. set xb=%xb%%a%
  10. ::不管多长 我就要前面的8个字符
  11. echo -%xa:~0,8%-
  12. echo -%xb:~0,8%-
  13. pause
复制代码


另外,这里可能有你想要知道的东西
http://bbs.bathome.net/thread-3136-1-1.html

可能我文采烂,没人鸟我,真够郁闷。

[ 本帖最后由 523066680 于 2009-1-25 21:03 编辑 ]

TOP

今天去买了个新电脑哈,舒服死了,都忘记来论坛了。。。

TOP

同样谢谢defanive,老朋友了,一直都很热心
不过,defanive的代码有问题,不能实现补充
空格的功能


请教:
for /l %%a in (1,1,30) do (set k= !k!)
其中 set k= !k!起了什么作用?


echo *   ^(!a!^)  !temp:~0,30!  *
!temp:~0,30!呢?莫非是某种字符串截取的技术?


[ 本帖最后由 sniperhgy 于 2009-1-25 20:38 编辑 ]

TOP

晕,都发重了。。。
要看到你也写代码了,我就不写了。。。

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. set "table=abcdefghijklmnop"&set i=0
  3. echo ***********************
  4. for /r .\ %%a in (*.exe) do (
  5. call set a=%%table:~!i!,1%%
  6. set e!a!="%%a"
  7. set "tmp=%%~nxa "
  8. echo * ^(!a!^) !tmp:~0,11! *
  9. set /a i+=1
  10. )
  11. set eq=exit/b
  12. echo * (q) Exit *
  13. echo ***********************
  14. set /p select=Plz choose:
  15. !e%select%!
  16. pause
复制代码
1

评分人数

TOP

返回列表