标题: [文本处理] [分享]批处理显示和选择文件序号不希望显示某些内容 [打印本页]
作者: Batcher 时间: 2021-11-6 20:06 标题: [分享]批处理显示和选择文件序号不希望显示某些内容
【问题描述】
批处理代码如下- @echo off
- :begin
- set File_Index=0
- for /f "delims=" %%f in ('dir /b "%~dp0\files_test\"') do (
- for /f %%n in ('set/a File_Index+=1') do (
- for /f %%a in ("1") do (
- set File_Entry[%%n]=%%f )
- echo %%n---%%f )
- set/a File_Index+=1 )
- echo 一共%File_Index%个文件/文件夹
- echo -----------------------------
- echo.
- echo. 请输入选择文件的序号:
- set File_Index=
- set /p File_Index=
- for /f "delims=" %%p in ('set File_Entry[%File_Index%]') do (
- echo 选择了 %%p )
- pause>nul
- cls & goto begin
复制代码
请输入选择文件的序号:
2
选择了 File_Entry[2]=1.txt
请按任意键继续. . .
我不想显示橙色方框里的东西,怎么做较为可靠?
作者: Batcher 时间: 2021-11-6 20:06
【解决方案】- @echo off
- :begin
- set File_Index=0
- for /f "delims=" %%f in ('dir /b "%~dp0files_test\"') do (
- for /f %%n in ('set /a File_Index+=1') do (
- for /f %%a in ("1") do (
- set File_Entry[%%n]=%%f
- )
- echo %%n---%%f
- )
- set /a File_Index+=1
- )
- echo 一共%File_Index%个文件/文件夹
- echo -----------------------------
- echo.
- echo. 请输入选择文件的序号:
- set File_Index=
- set /p File_Index=
- for /f "tokens=2 delims==" %%p in ('set File_Entry[%File_Index%]') do (
- echo 选择了 %%p
- )
- pause
- cls
- goto :begin
复制代码
作者: Batcher 时间: 2021-11-6 20:09
进一步优化,省略第三层for循环:- @echo off
- :begin
- set File_Index=0
- for /f "delims=" %%f in ('dir /b "%~dp0files_test\"') do (
- for /f %%n in ('set /a File_Index+=1') do (
- set File_Entry[%%n]=%%f
- echo %%n---%%f
- )
- set /a File_Index+=1
- )
- echo 一共%File_Index%个文件/文件夹
- echo -----------------------------
- echo.
- echo. 请输入选择文件的序号:
- set File_Index=
- set /p File_Index=
- for /f "tokens=2 delims==" %%p in ('set File_Entry[%File_Index%]') do (
- echo 选择了 %%p
- )
- pause
- cls
- goto :begin
复制代码
作者: Batcher 时间: 2021-11-6 22:41
【问题2】
这个方法如果遇到文件名是“=”开头的是不是显示不出来等号?
【代码2】- @echo off
- :begin
- set File_Index=0
- for /f "delims=" %%f in ('dir /b "%~dp0files_test\"') do (
- for /f %%n in ('set /a File_Index+=1') do (
- set File_Entry[%%n]=%%f
- echo %%n---%%f
- )
- set /a File_Index+=1
- )
- echo 一共%File_Index%个文件/文件夹
- echo -----------------------------
- echo.
- echo. 请输入选择文件的序号:
- set File_Index=
- set /p File_Index=
- for /f "tokens=1* delims==" %%p in ('set File_Entry[%File_Index%]') do (
- echo 选择了 %%q
- )
- pause
- cls
- goto :begin
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |