通过cmd打开一个文件,并在特定的编辑器中显示选中的内容

打开特定位置的cmd示例D:/ text只显示带有.txt扩展名的文件示例

Dir..../D:/text Text1.txt Text2.txt Text3.txt 

并添加functionselecttext1或2或3使用数字或类似的东西

1- Text1.txt

2- Text2.txt

3- Text3.txt

并select1或任何后,用特定的程序打开文件,而不改变默认的应用程序在Windows(记事本)打开我想用崇高的文本编辑器(便携版本)打开.txt文件。

而这一切都在一个batch file

你至少应该告诉我们你到底在做什么代码? 这一点开始用数字列出文本文件并对它们进行计数:

 @ECHO OFF SETLOCAL SET "ROOT=%~dp0" SET "EXT=*.txt" ECHO ----------------------------------------------- ECHO Listing text files on this folder - "%ROOT%" ECHO ----------------------------------------------- SET "Count=0" SETLOCAL enabledelayedexpansion REM Iterates throw the files on this current folder. REM And Populate the array with existent files in folder FOR %%f IN ("%ROOT%\%EXT%") DO ( SET /a "Count+=1" set list[!Count!]=%%~nxf ) set Files=%Count% ECHO. rem Display array elements for /L %%i in (1,1,%Files%) do echo file number [%%i] : "!list[%%i]!" SET /a "COUNT_TOT=%Count%" ECHO. ECHO Total of text files(s) : %Count% file(s) EndLocal PAUSE>nul 

编辑:在25/07/2016 @ 21:28

我下载并设置Sublime Text 2只是为了在我的电脑上试试!

Upadte版本与崇高的文字2

 @ECHO OFF Title Open the selected file with Sublime Text :MenuLoop Cls & Color 0A SETLOCAL SET "ROOT=%~dp0" SET "EXT=*.txt" SET "Count=0" SETLOCAL enabledelayedexpansion REM Iterates throw the files on this current folder. REM And Populate the array with existent files in folder FOR %%f IN ("%ROOT%\%EXT%") DO ( SET /a "Count+=1" set list[!Count!]=%%~nxf ) echo wscript.echo Len("%ROOT%"^) + 15 >"%tmp%\length.vbs" for /f %%a in ('Cscript /nologo "%tmp%\length.vbs"') do ( set "cols=%%a") set Files=%Count% set /a lines=%Count% + 10 Mode con cols=%cols% lines=%lines% ECHO ******************************************************** ECHO Folder : "%ROOT%" ECHO ******************************************************** ECHO. rem Display array elements for /L %%i in (1,1,%Files%) do echo [%%i] : !list[%%i]! SET /a "COUNT_TOT=%Count%" ECHO. ECHO Total of text files(s) : %Count% file(s) echo( echo Type the number of what file did you want to open ?" set /p "Input=" For /L %%i in (1,1,%Count%) Do ( If "%INPUT%" EQU "%%i" ( Rem Testing if sublime_text.exe exist to open with it the text file If Exist "%programfiles%\Sublime Text 2\sublime_text.exe" ( Start "Sublime" "%programfiles%\Sublime Text 2\sublime_text.exe" "!list[%%i]!" Rem Otherwise we open the text file with defalut application like notepad ) else ( Start "" "!list[%%i]!" ) ) ) EndLocal Goto:MenuLoop 

编辑于28/07/2016 @ 14:15

升级版本与崇高文本3和列表中的子目录中的文件

 @ECHO OFF REM : To download Sublime Text REM https://www.sublimetext.com/3 Title Edit the selected file with Sublime Text 3 :MenuLoop Cls & Color 0A SETLOCAL SET "ROOT=%~dp0" SET "EXT=*.bat" SET "Count=0" SETLOCAL enabledelayedexpansion REM Iterates throw the files on this current folder. REM And Populate the array with existent files in folder FOR /f "delims=" %%f IN ('dir /b /s "%ROOT%\%EXT%"') DO ( SET /a "Count+=1" set "list[!Count!]=%%~nxf" set "listpath[!Count!]=%%~dpFf" ) echo wscript.echo Len("%ROOT%"^) + 18 >"%tmp%\length.vbs" for /f %%a in ('Cscript /nologo "%tmp%\length.vbs"') do ( set "cols=%%a") If %cols% LSS 30 set /a cols=%cols% + 10 set Files=%Count% set /a lines=%Count% + 10 Mode con cols=%cols% lines=%lines% ECHO ******************************************************* ECHO Folder : "%ROOT%" ECHO ******************************************************* rem Display array elements for /L %%i in (1,1,%Files%) do echo [%%i] : !list[%%i]! SET /a "COUNT_TOT=%Count%" ECHO. ECHO Total of [%EXT%] files(s) : %Count% file(s) echo( echo Type the number of what file did you want to edit ? set /p "Input=" set "sublimeEXE=%programfiles%\Sublime Text 3\sublime_text.exe" For /L %%i in (1,1,%Count%) Do ( If "%INPUT%" EQU "%%i" ( Rem Testing if sublime_text.exe exist to open with it the text file If Exist "%sublimeEXE%" ( Start "Sublime" "%sublimeEXE%" "!listpath[%%i]!" Rem Otherwise we open the text file with defalut application like notepad ) else ( Start "" Notepad.exe "!listpath[%%i]!" ) ) ) EndLocal Goto:MenuLoop