有没有办法通过阅读目录来查看文件夹中的* .xlsx文件是否受密码保护?
示例目录文本文件
1.xlsx
2.xlsx
3.xlsx
4.xlsx
示例结果文本文件
1.xlsx - 受保护的
2.xlsx
3.xlsx - 受保护的
4.xlsx
我基本上想看看我的目录中哪些是密码保护而不试图打开它们。我想知道是否有目录切换。顺便说一句,这是在Windows机器上。
答案 0 :(得分:0)
这仅适用于OOXML文件。由于这种文件是ZIP文件,文件中的前两个字节是PK
,除非文件受密码保护。
因此,假设要处理的所有文件都是office OOXML文件,如果文件中的第一个字符是P
,请测试。要捕获此角色,我们将使用xcopy /w
,等待按键并回显此按键。要捕获第一个字符,只需将文件重定向为xcopy的输入,因此,按键将是文件中的第一个字符。如果此字符为P
,则该文件不受密码保护。
@echo off
setlocal enableextensions enabledelayedexpansion
for %%a in (*.xlsx) do (
call :isOfficeFilePasswordProtected "%%a"
if errorlevel 1 (
echo %%a
) else (
echo %%a - protected
)
)
exit /b
:isOfficeFilePasswordProtected file
if not exist "%~1" exit /b 1
if %~z1 lss 1 exit /b 1
setlocal enableextensions disabledelayedexpansion
set "id=" & for /f "delims=" %%a in ('
xcopy /l /w "%~f0" "%~f0" 2^>nul ^<"%~1"
') do if not defined id set "id=%%a"
if "%id:~-1%"=="P" ( set "exitCode=1" ) else ( set "exitCode=0" )
endlocal & exit /b %exitCode%