关于命令行:使用批处理文件打开一系列文件中的一个

关于命令行:使用批处理文件打开一系列文件中的一个

Open one of a series of files using a batch file

基于此结构,我最多有4个文件(请注意,前缀是日期)

  • 0830filename.txt
  • 0907.filename.txt
  • 0914filename.txt
  • 0921filename.txt

我想打开最新的(0921filename.txt)。 如何在批处理文件中执行此操作?

谢谢。


此方法使用实际的文件修改日期来确定哪个是最新文件:

1
2
3
4
5
6
7
8
@echo off
for /F %%i in ('dir /B /O:-D *.txt') do (
    call :open"%%i"
    exit /B 0
)
:open
    start"dummy""%~1"
exit /B 0

但是,此方法将按字母顺序选择最后一个文件(或按反字母顺序选择第一个文件),因此,如果文件名是一致的,它将起作用:

1
2
3
4
5
6
7
8
@echo off
for /F %%i in ('dir /B *.txt^|sort /R') do (
    call :open"%%i"
    exit /B 0
)
:open
    start"dummy""%~1"
exit /B 0

实际上,您必须选择哪种方法更适合您。


抱歉,向这个问题发送垃圾邮件,但我真的很想发布真实答案。
如果您希望BATCH脚本解析和比较文件名中的日期,则可以使用如下所示的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@echo off

rem Enter the ending of the filenames.

rem Basically, you must specify everything that comes after the date.
set fn_end=filename.txt

rem Do not touch anything bellow this line.

set max_month=00
set max_day=00

for /F %%i in ('dir /B *%fn_end%') do call :check"%%i"
call :open %max_month% %max_day%
exit /B 0

:check
    set name=%~1
    set date=%name:~0,4%
    set month=%date:~0,2%
    set day=%date:~2,2%
    if /I %month% GTR %max_month% (
        set max_month=%month%
        set max_day=%day%
    ) else if /I %month% EQU %max_month% (
        set max_month=%month%
        if /I %day% GTR %max_day% (
            set max_day=%day%
        )
    )
exit /B 0

:open
    set date=%~1
    set month=%~2
    set name=%date%%month%%fn_end%
    start"dummy""%name%"
exit /B 0

一种班轮,使用退出技巧:

1
FOR /F %%I IN ('DIR *.TXT /B /O:-D') DO NOTEPAD %%I & EXIT

编辑:

@pam:是的,我假设文件是??按日期顺序排列的,但是您可以将命令更改为:

1
FOR /F %%I IN ('DIR *.TXT /B /O:-N') DO NOTEPAD %%I & EXIT

则文件列表按名称以相反的顺序排序。


在这里,您可以...(希望没人能击败我...)(您需要将文件另存为lasttext.bat或其他名称)
这将打开/运行最早的.txt文件

1
2
3
4
dir *.txt /b /od > systext.bak
FOR /F %%i in (systext.bak) do set sysRunCommand=%%i
call %sysRunCommand%
del systext.bak /Y

可能只有XP。注意:DOS的强大功能。
尽管这会按日期获取最新的文件名-并非按文件名。

如果要获取最新的文件名,请将/ od更改为/ on。
如果要对其他内容进行排序,请在第二行中添加"排序"命令。


使用正则表达式将相关的整数解析出来并进行比较。


推荐阅读

    linux复制命令行窗口?

    linux复制命令行窗口?,工作,系统,地址,信息,命令,标准,目录,文件,功能,内容,l

    linux开机命令行界面?

    linux开机命令行界面?,系统,数字,首页,终端,密码,发行,工具,地方,界面,命令,

    linux命令添加文件?

    linux命令添加文件?,工作,简介,数据,系统,文件,命令,操作,文件名,内容,终端,l

    linux退出启动命令行?

    linux退出启动命令行?,系统,状态,档案,平台,命令,环境,模式,终端,程序,编辑,l

    linux文件输入命令?

    linux文件输入命令?,工作,系统,地址,信息,工具,位置,命令,设备,发行,首开,lin

    linux命令行设置字体?

    linux命令行设置字体?,系统,工具,终端,软件,电脑,数字,位置,等级,字体,命令,L

    文件备份命令linux?

    文件备份命令linux?,网站,系统,设备,文件,软件,网络,工具,环境,数据,地址,lin

    linux命令行执行py?

    linux命令行执行py?,系统,环境,官网,一致,文件,程序,脚本,源文件,后台,终端,l

    linux命令行如何打开?

    linux命令行如何打开?,系统,首页,工具,终端,图片,密码,电脑,发行,信息,位置,

    linux文件中剪切命令?

    linux文件中剪切命令?,位置,系统,工作,命令,发行,连续,标准,终端,文件,目录,l

    linux命令行不能输入?

    linux命令行不能输入?,工作,系统,电脑,服务,命令,名字,首次,百度,管理,第一,l

    linux存储文件命令?

    linux存储文件命令?,系统,地址,工作,命令,软件,电脑,标准,底部,信息,文件,lin

    linux怎么清除命令行?

    linux怎么清除命令行?,系统,环境,档案,命令,数字,地址,文件,目录,指令,光标,l

    linux快速删除命令行?

    linux快速删除命令行?,系统,软件,名称,数据,命令,文件,档案,不了,电脑,通用,l

    linux保存命令文件?

    linux保存命令文件?,系统,状态,命令,文件,第一,管理,电脑,模式,编辑,终端,lin

    linux私有文件命令?

    linux私有文件命令?,系统,工作,工具,命令,设备,文件,目录,位置,不了,情况,Lin

    linux清理磁盘命令行?

    linux清理磁盘命令行?,系统,电脑,工具,情况,软件,项目,数据,盘中,信息,命令,

    linux命令行无声音?

    linux命令行无声音?,系统,单位,手机,权威,数据,首页,工具,音乐,音效,命令,完

    linux命令行返回桌面?

    linux命令行返回桌面?,系统,密码,状态,暂停,环境,终端,信息,命令,界面,字符,l

    linux命令行不够用?

    linux命令行不够用?,代码,基础,命令,环境,系统,工具,服务,网络,百度,管理,Lin