2014-10-01 2 views
1

Есть ли способ увидеть, если * .xlsx файлы в папке защищены паролем, прочитав каталог?Как получить список защищенных паролем * .xlsx файлов в каталоге, содержащем много файлов Excel?

Пример текста каталога файлов

1.xlsx
2.xlsx
3.xlsx
4.xlsx

Пример результатов текстовый файл

1.xlsx - защищенный
2.xlsx
3.xlsx - protected
4.xlsx

Я в основном хочу видеть, какие из них из моего каталога защищены паролем, не пытаясь их открыть. Мне интересно, есть ли переключатель каталога. Кстати, это на Windows-машине.

+0

что вы подразумеваете под зашифрованным? NTFS-шифрование или защищенные паролем файлы? – npocmaka

+0

@npocmaka защищенные паролем файлы – JDE876

+0

Это может дать вам некоторые подсказки: https://en.wikipedia.org/wiki/Office_Open_XML - что-то с «unzip» может работать –

ответ

0

Это будет работать только с файлами OOXML. Поскольку такие файлы являются ZIP-файлами, первые два байта в файле: PK, если файл не защищен паролем.

Таким образом, для обработки всех файлов для обработки являются файлы 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% 
+0

Это сработало и было очень полезно .. У меня вопрос. .. часть «isOfficeFilePasswordProtected», откуда это происходит? – JDE876

+0

@ JDE876, я должен был назвать это. Офисы шифруют файлы, когда они защищены паролем, поэтому ... Но это подпрограмма, назовите ее так, как вы хотите. –

Смежные вопросы