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

[文本处理] [分享]批处理显示和选择文件序号不希望显示某些内容

【问题描述】

批处理代码如下
  1. @echo off
  2. :begin
  3. set File_Index=0
  4. for /f "delims=" %%f in ('dir /b "%~dp0\files_test\"') do (
  5. for /f %%n in ('set/a File_Index+=1') do (
  6. for /f %%a in ("1") do (
  7. set File_Entry[%%n]=%%f )
  8. echo %%n---%%f )
  9. set/a File_Index+=1 )
  10. echo 一共%File_Index%个文件/文件夹
  11. echo -----------------------------
  12. echo.
  13. echo.                请输入选择文件的序号:
  14. set File_Index=
  15. set /p File_Index=
  16. for /f "delims=" %%p in ('set File_Entry[%File_Index%]') do (
  17. echo 选择了 %%p )
  18. pause>nul
  19. cls & goto begin
复制代码
                请输入选择文件的序号:
2
选择了 File_Entry[2]=1.txt
请按任意键继续. . .


我不想显示橙色方框里的东西,怎么做较为可靠?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

【解决方案】
  1. @echo off
  2. :begin
  3. set File_Index=0
  4. for /f "delims=" %%f in ('dir /b "%~dp0files_test\"') do (
  5.     for /f %%n in ('set /a File_Index+=1') do (
  6.         for /f %%a in ("1") do (
  7.             set File_Entry[%%n]=%%f
  8.         )
  9.         echo %%n---%%f
  10.     )
  11.     set /a File_Index+=1
  12. )
  13. echo 一共%File_Index%个文件/文件夹
  14. echo -----------------------------
  15. echo.
  16. echo.                请输入选择文件的序号:
  17. set File_Index=
  18. set /p File_Index=
  19. for /f "tokens=2 delims==" %%p in ('set File_Entry[%File_Index%]') do (
  20.     echo 选择了 %%p
  21. )
  22. pause
  23. cls
  24. goto :begin
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

进一步优化,省略第三层for循环:
  1. @echo off
  2. :begin
  3. set File_Index=0
  4. for /f "delims=" %%f in ('dir /b "%~dp0files_test\"') do (
  5.     for /f %%n in ('set /a File_Index+=1') do (
  6.         set File_Entry[%%n]=%%f
  7.         echo %%n---%%f
  8.     )
  9.     set /a File_Index+=1
  10. )
  11. echo 一共%File_Index%个文件/文件夹
  12. echo -----------------------------
  13. echo.
  14. echo.                请输入选择文件的序号:
  15. set File_Index=
  16. set /p File_Index=
  17. for /f "tokens=2 delims==" %%p in ('set File_Entry[%File_Index%]') do (
  18.     echo 选择了 %%p
  19. )
  20. pause
  21. cls
  22. goto :begin
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

【问题2】
这个方法如果遇到文件名是“=”开头的是不是显示不出来等号?

【代码2】
  1. @echo off
  2. :begin
  3. set File_Index=0
  4. for /f "delims=" %%f in ('dir /b "%~dp0files_test\"') do (
  5.     for /f %%n in ('set /a File_Index+=1') do (
  6.         set File_Entry[%%n]=%%f
  7.         echo %%n---%%f
  8.     )
  9.     set /a File_Index+=1
  10. )
  11. echo 一共%File_Index%个文件/文件夹
  12. echo -----------------------------
  13. echo.
  14. echo.                请输入选择文件的序号:
  15. set File_Index=
  16. set /p File_Index=
  17. for /f "tokens=1* delims==" %%p in ('set File_Entry[%File_Index%]') do (
  18.     echo 选择了 %%q
  19. )
  20. pause
  21. cls
  22. goto :begin
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表