通过cmd打开一个文件并在特定的编辑器中显示选定的 [英] Open a file through cmd and display the selected in specific editor
问题描述
在特定位置打开cmd 示例D:/text并且只显示扩展名为 .txt 的文件例子
Open cmd in a specific location Example D:/text And only show the files with the .txt extension Example
Dir..../D:/text
Text1.txt
Text2.txt
Text3.txt
并添加选择文本1或2或3的功能使用数字或类似的东西
And add the function to select the text1 or 2 or 3 Using a numbers or something like
1- Text1.txt
1- Text1.txt
2- Text2.txt
2- Text2.txt
3- Text3.txt
3- Text3.txt
在选择 1 或 any 后,使用特定程序打开文件而不更改在 windows 中打开的默认应用程序(记事本)我想用 sublime 文本编辑器(便携版)打开 .txt 文件
And after selecting 1 or any, open the file with a specific program without changing the default app opening in windows (notepad) I wanna open the .txt file with sublime text editor (portable version)
所有这些都在一个批处理文件中.
And all this in a batch file.
推荐答案
您至少应该向我们展示到目前为止您作为代码尝试了什么!这有点开始列出带有数字的文本文件并计算它们:
You should at least show us what did you tried as code until now ! This a little starting to list text files with numbers and counting them :
@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 Text2 只是为了在我的电脑上试一试!
I download and setup Sublime Text 2 just for giving a try on my computer !
带有 Sublime Text 2 的 Upadte 版本
@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 2sublime_text.exe" (
Start "Sublime" "%programfiles%Sublime Text 2sublime_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
带有 sublime text 3 和子目录中的列表文件的 Upadte 版本
@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 3sublime_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
这篇关于通过cmd打开一个文件并在特定的编辑器中显示选定的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!