Некоторое время не занимался программированием, но теперь обнаружил, что мне нужно автоматизировать некоторые вещи. По сути, я хотел бы, чтобы пакетный файл выполнял поиск в локальном каталоге для файла с именем «(U) Password.txt», который состоит из 4 строк строки. Я хочу, чтобы он выполнял поиск, используя слово "findstr", слово "TEXT", и сохранял переход на следующую строку, фиксируя эту строку в переменной для использования в качестве пароля дешифрования. Оставшийся код был протестирован и работает нормально, но есть много возможностей для улучшения. Могу ли я использовать «Skip = 1» для захвата строки под рынком "Текст" с помощью findstr для захвата следующей строки?

::Образец кода

     @ECHO OFF
REM version 0.4

:: Get the Current Directory ::
SET FolderName=%cd%

:: Make the new Encrypted and Unencrypted Folders
echo D| md %FolderName%\'Encrypted_Databases'
echo D| md %FolderName%\'Unencrypted_Databases'
echo D| md %FolderName%\'Difference_Reports'

set findtext="TEXT"
set findfile="(U) Password.txt"
findstr %findtext% %findfile%
for /f "delims=" %%a in ('findstr %findtext% %findfile%') do echo %%a

:: Decrypt the Databases ::
SET /p DB_PASSWORD= %%a
IF ["%DB_PASSWORD%"]==[""] ECHO Password not set. & GOTO EXIT
SET "DB_FILES=db1.db db2.db db3.db db4.db db5.db db6.db db7.db db8.db db9.db"

ECHO Decrypting...
SET /a DB_TOTAL_COUNT=0
for %%a in (%DB_FILES%) do (
  decryptionSoftware.exe -key "%DB_PASSWORD%" %%a "PRAGMA rekey='';"
  SET /a DB_TOTAL_COUNT+=1
)
ECHO Done!

ECHO.
ECHO.
ECHO Testing...
SET /a DB_COUNT=0
3>nul 2>nul (
  for %%b in (%DB_FILES%) do (
    for /f "tokens=*" %%I in ('decryptionSoftware.exe %%b "SELECT COUNT(*) FROM SQLITE_MASTER;"') do (
      REM The following line will not execute if the SQLite command above fails
      SET /a DB_COUNT+=1
    )
  )
)
IF %DB_COUNT%==%DB_TOTAL_COUNT% ECHO Success decrypting!
IF %DB_COUNT% LSS %DB_TOTAL_COUNT% ECHO Problem decrypting!

::EXIT ::
ECHO.
ECHO.

: Move Unencrypted Databases from the Root Directory to the newly Created Unencrypted File Structure ::
echo F| XCOPY "%folderName%\DatabaseTesting\Unencrypted_Databases\*.db"/Y

PAUSE
exit

1 ответ1

0

Так что, если я делаю это правильно, это может решить мою проблему. Вместо поиска слова "Текст" в файле я могу просто искать строку 4 в файловых пространствах и все. Так что это мое решение, я думаю. Кто-нибудь думает, что есть лучший способ?

@echo off
:: Exctract the Code from the Text Document ::
FOR /F "USEBACKQ SKIP=3" %%C IN ("(U) password.txt") DO ECHO %%C

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .