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
我需要一点帮助... 我有一个批处理文件可以打开 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