Usando um arquivo em lote para retornar uma senha de um arquivo de texto em uma variável armazenada

0

Tenho estado longe de programar por um tempo, mas agora estou precisando automatizar algumas coisas. Essencialmente, o que eu gostaria de fazer é fazer com que o arquivo de lote pesquise no diretório local o arquivo chamado "(U) Password.txt", que consiste em 4 linhas de string. Eu quero que ele pesquise usando "findstr" a palavra "TEXTO" e salte para a próxima linha que captura a linha em uma variável para usar a senha de decriptografia. O código restante foi testado e funciona bem, mas tem muito espaço para melhorias. Posso usar "Skip = 1" para capturar a linha sob o mercado "Text" com findstr para capturar a próxima linha?

:: Exemplo de código

     @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
    
por Stephen D. Dunn 18.12.2017 / 20:30

1 resposta

0

Então, se estou fazendo isso corretamente, isso pode resolver o meu problema. Em vez de procurar pela palavra "Text" no arquivo, posso apenas procurar a linha 4 nos espaços de arquivos e tudo. Então esta é a minha correção, eu acho. Alguém acha que existe uma maneira melhor?

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