win 7 批处理文件打开 excel 起始编号最高的文件

win 7 batch file to open excel file with highest number starting

我需要一点帮助... 我有一个批处理文件可以打开 excel 文件的最大编号(文件名开头的编号),这样我就可以使用快捷方式,而不必每次都浏览文件夹并手动打开最大编号的文件...

我相信你们中的许多人都清楚我的代码从 55 倒数到 1,当发现第一个文件名存在时,它会打开它并终止批处理文件。

现在,它成功地倒计时并识别出第一个现有文件,所以我认为通配符是正确的,但它无法打开文件,所以我的通配符在某种程度上不正确...

我的文件名开始超过“10”两位数标记,所以我不关心在 %%I=10 之前的 FOR 循环中处理 %%I...没关系.. .

所以这里是:

@ECHO OFF
CLS
SET count=55
SET break=
FOR /L %%I IN (%count%,-1,1) DO (IF NOT DEFINED break (CALL :routine %%I) ELSE  (GOTO :end))

:routine
IF EXIST %1*.xlsx "c:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" "%1*.xlsx" & SET break=yes

:end

参数中的文件名被识别为:

11*.XLSX

而不是这个:

11-AD-13-03-2017.xlsx

非常感谢大家阅读... 这是非常赞赏... 安德拉斯

也许是这样的?

for /F %%a in ('dir /B *-AD-*.xlsx ^| sort /R') do (
    set FILENAME=%%a
    goto :OPENFILE )

:OPENFILE
start excel %FILENAME%

这使用 sort 命令对文件进行排序,因此最大的数字在最前面。

由于数字的长度是固定的,因此您只需对名称进行反向排序即可。
第一个条目的编号最高。

@Echo off
Set "Highest="
for /f "tokens=1* delims=-" %%A in (
  'Dir /B/O-N ??-AD-*.xlsx'
) Do If not defined Highest (Set "Highest=%%A"&Set "FileName=%%A-%%B")
Echo Highest number is : %Highest% file name: %Filename%

输出样本数据:

Highest number is : 11 file name: 11-AD-13-03-2017.xlsx

编辑 如果文件驻留在 ntfs 格式的驱动器上(名称具有固有排序),这就是您所需要的:

for %%A in (??-AD-*.xlsx) Do set FileName=%%A

使用Powershell?将其保存在名为 .ps1 的文件中,确保 .ps1 扩展名与 Powershell .exe 相关联,然后坐下来享受旅程。

cd "where the files are at"
$file = get-childitem *.xls | sort-object -descending | select-object -first 1
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Workbooks.Open($file.name)
$objExcel.Visible = $true